0

我以以下格式将日期发送到服务器:“01-01-1970”

我这样做是为了获取日期并对其进行格式化:

$datetime =  date('d-m-Y H:i:s', strtotime($_POST["date"]  . "19:31:30"));

然后我使用 PDO 将其发送到数据库,只需执行以下操作:

$stmt = $db->prepare("INSERT INTO events
            (runnerID,eventDateTime,duration,
            cost,address,city,country,
            postcode,description) VALUES
(?,?,?,?,?,?,?,?,?);
    ");
$stmt->execute(array($userID,$datetime,$_POST["duration"],$_POST["eventPrice"],
    $_POST["addressLine1"],$_POST["addressCity"],$_POST["addressCountry"],$_POST["addressPostCode"],$_POST["eventDesc"]));

但是当我进入数据库时​​,它保存为:“0000-00-00 00:00:00”该列的类型是“datetime”

有谁知道为什么会这样?

4

3 回答 3

3

它应该是日期(“Ymd H:i:s”.....

$datetime =  date('Y-m-d H:i:s', strtotime($_POST["date"]  . " 19:31:30"));

...而您在时间之前有一个缺失的空间

于 2013-05-29T15:10:35.717 回答
1

使用日期时间字段,您需要单引号您的值“$datetime”。这将填充您的字段。我曾多次犯过同样的错误。

于 2013-05-29T15:14:22.467 回答
0

尝试回显 $datetime 变量以查看在运行查询之前得到的结果。

此外,您正在向数据库发布未经验证的帖子值,这使您容易受到 sql 注入攻击。在运行查询之前验证每个 post 值。

过滤输入 php 文档

于 2013-05-29T15:15:12.130 回答