【发布时间】:2015-11-25 01:09:59
【问题描述】:
我有一个输入字段,它以时间格式'H:i A' 输入,应该存储在time 类型数据的mysql 数据库中。
我已经通过dateTime 函数转换了输入,看起来像-
$sat_opened = DateTime::createFromFormat( 'H:i A',$_POST['sat_opened']);
$sat_opened_new = $sat_opened->format('H:i:s');
用于插入的查询是 -
mysqli_query($connect, "INSERT INTO biz_hours VALUES(DEFAULT, '$bid', 'Sat', '$sat_status', '$sat_opened_new', '$sat_closed','')")
Others 正在插入数据,但对于 opened 列,它始终插入 12:00:00 。如果我打印转换后的时间(echo $sat_opened_new),那么它打印的时间应该是 MySQL 时间格式,例如 - 08:50:00 或 17:30:00
实际上存在什么问题?请帮我找出来。谢谢
【问题讨论】:
-
您正在尝试插入 DateTime 对象而不是格式化时间。
-
抱歉,输入错误。在问题中更新。
-
您是否尝试过只是回显它而不是运行查询?
echo "INSERT INTO biz_hours VALUES(DEFAULT, '$bid', 'Sat', '$sat_status', '$sat_opened_new', '$sat_closed','')";这至少可以让你看到正在执行的内容。 -
还有一个想法,出于兼容性目的,您应该始终声明这些字段。如果表结构发生变化,或者值与表结构不匹配,则不会将值插入到正确的位置。应该是
INSERT INTO table (field) VALUES ('$value') -
它打印
INSERT INTO biz_hours VALUES(DEFAULT, '3', 'Sat', '2', '14:00:00', '10:00 AM','')看起来不错,但在数据库中它插入12:00:00而不是14:00:00