【问题标题】:Date not being sent over to mysql日期未发送到 mysql
【发布时间】:2013-06-04 04:25:05
【问题描述】:

我到处寻找,但似乎找不到正确的代码。我有一个 html 表单使用“日期”输入从用户那里获取日期。

index.html:

<form name="myform" action="process.php" method="POST">
     Date: <input type="date" name="date"><br>
     <input type="submit" value="Submit">
</form>

进程.php:

$link=mysqli_connect("my.sql.server", "username", "psswd", "database_name")
$date = $_POST['date'];
mysqli_query($link,"INSERT INTO visit_exclude_dates (date) VALUES (CAST $date AS DATE)");

$date 从表格出来时的值是 yyyy-mm-dd 格式,我能够成功写入数据库。我的问题是,当我读取数据库时,日期显示为 0000-00-00。所以我认为问题出在这一行:

mysqli_query($link,"INSERT INTO visit_exclude_dates (date) VALUES (CAST $date AS DATE)");

编辑: 我想指出 visit_exclude_dates 是我的表的名称

【问题讨论】:

  • 是什么让您相信您可以“成功写入数据库”?
  • 我想成功不是一个好词,但我知道正在将某些内容写入数据库,因为更多索引被添加到我的表的“日期”变量中。我可以在 phpMyAdmin 中看到这一点,并使用 'SELECT date FROM visit_exclude_dates'

标签: php mysql date phpmyadmin forms


【解决方案1】:

尝试在查询中的日期字段周围添加刻度。如果您确定输入是 Y-m-d 格式,它很可能会解决您的问题:

$date = date("Y-m-d", strtotime($_POST['date']));
$result = mysqli_query($link,"INSERT INTO visit_exclude_dates (date) VALUES ('{$date}')");

if(!$result) {
    echo "Error: " . $link->error);
    die();
}

$result->close();
$link->close();

【讨论】:

  • 编辑和删除 Cast 功能。如果你用 strtotime 清理你的输入,这会更整洁。
  • 我该怎么做呢?上面的代码也无法写入数据库,没有返回任何值,甚至没有 0000-00-00
  • 没有返回值是什么意思?如果它不起作用,此代码将返回 FALSE,如果它起作用,则返回结果对象。你查过你的数据库吗?它有没有向数据库写入任何内容?如果有 mysql 错误,我正在编辑我的代码。
  • 我正在使用 phpMyAdmin,在我更新代码之前,我的表中充满了我添加日期的尝试(它会将每个日期显示为 0000-00-00,除非我向表通过使用 phpMyAdmin 界面)。现在没有任何更新。
  • 输入带有错误检查的代码,如果遇到 MySQL 错误,请告诉我。它将帮助我们深入了解它。
【解决方案2】:

Use strtotime

您需要强制用户输入特定的模式。

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    相关资源
    最近更新 更多