Php 如何在MySQL表中插入当前日期和时间到日期时间数据类型列?

Php 如何在MySQL表中插入当前日期和时间到日期时间数据类型列?,php,mysql,Php,Mysql,如何在MySQL表中使用DATETIME数据类型在时钟列中插入date'd-m-Y h:i:s'的值 date_default_timezone_set("Asia/Kuala_Lumpur"); $date=date('d-m-Y h:i:s'); $sql=mysqli_query($connection,"INSERT INTO time (clock)VALUES($date)"); 我一直在犯这个错误 您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解第1

如何在MySQL表中使用DATETIME数据类型在时钟列中插入date'd-m-Y h:i:s'的值

date_default_timezone_set("Asia/Kuala_Lumpur");
$date=date('d-m-Y h:i:s');

    $sql=mysqli_query($connection,"INSERT INTO time (clock)VALUES($date)");
我一直在犯这个错误
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解第1行“11:22:03”附近使用的正确语法根据MySQL文档,DATETIME类型仅支持YYYY-MM-DD hh:MM:ss格式,这相当于PHP格式

Y-m-d h:i:s为12小时格式。 Y-m-d H:i:s表示24小时格式。
添加PM或AM在MySQL上不起作用。

您的代码中有多个问题:

MySQL的DATETIME数据类型要求插入的值的格式为%Y-%m-%d%H:%i:%s或PHP中的Y-m-d H:i:s。 日期时间值必须用单引号括起来。这就是语法错误的原因。 您的代码应该是:

date_default_timezone_set("Asia/Kuala_Lumpur");
$date = date('Y-m-d H:i:s');

$sql = $connection->query("INSERT INTO time (clock) VALUES ('{$date}')");
然而,即使$date的值不是来自用户输入,并且不包含特殊的SQL字符,它也会创建一个新的变量,即在SQL查询中插入变量。现在应该开始使用参数化的准备语句。这将是:

$stmt = $connection->prepare("INSERT INTO time (clock) VALUES (?)");
$stmt->bind_param('s', $date);
$stmt->execute();

date函数返回格式化的日期字符串,请发布插入代码PHP date没有sa作为格式化参数我已发布插入代码。很抱歉。@nbk它的实际h:i:s值是am或pm。为什么不使用$date=date'Y-m-d h:i:s'?当您需要时,请使用该格式在am/pm中显示它?我尝试了这个$date=date'Y-m-d h:i:s';这个错误出现了,你的SQL语法有一个错误;查看与您的MySQL服务器版本对应的手册,在第1wow行的“09:59:30”附近使用正确的语法,这非常有效。它解决了错误,非常感谢您,先生。顺便问一下,其他价值观呢?我是否也需要像“{$date}”这样键入,还是只需要键入它的DATETIME列?在这种情况下,您也可以使用“$date”。使用{$variable}可以被视为良好的做法。在某些情况下,你需要它。例如:时间:{$value}ms工作正常。但是时间:$valuems将引发一个错误:未知变量“$valuems”。所以我倾向于总是使用{},只是为了避免错误。