使用 mysqli 保存时间戳
Saving timestamp with mysqli
我在通过 MySQLi 将 jQuery UI 日期选择器日期保存到 TIMESTAMP 列时遇到问题。
我的变量 $_POST['schedule']
包含 04-09-2015
(dd-mm-yy)。我使用以下准备好的语句:
$stmt = $mysqli->prepare("INSERT INTO campaigns (schedule) VALUES (?)");
$stmt->bind_param("s", strtotime($_POST['schedule']));
当我检查数据库时,相应的时间戳列总是重置为 0000-00-00 00:00:00
。如果我回显 strtotime($_POST['schedule'])
我得到一个有效的 UNIX 时间戳。
也无法将 bind_param 从 s
更改为 i
。
我觉得我犯了一个微不足道的错误,但无法理解它是什么。我做错了什么?
我发现解决此问题的唯一方法是使用以下内容并更改格式:
$date = DateTime::createFromFormat('d-m-Y', $_POST['schedule']);
$date = $date->format('Y-m-d');
$stmt = $mysqli->prepare("INSERT INTO campaigns (schedule) VALUES (?)");
$stmt->bind_param("s", $date);
$date = date_create($_POST['schedule']);
$stmt = $mysqli->prepare("INSERT INTO campaigns (schedule) VALUES (?)");
$stmt->bind_param("s", date_format($date, 'Y-m-d H:i:s'));
试试这个。更改格式。
我在通过 MySQLi 将 jQuery UI 日期选择器日期保存到 TIMESTAMP 列时遇到问题。
我的变量 $_POST['schedule']
包含 04-09-2015
(dd-mm-yy)。我使用以下准备好的语句:
$stmt = $mysqli->prepare("INSERT INTO campaigns (schedule) VALUES (?)");
$stmt->bind_param("s", strtotime($_POST['schedule']));
当我检查数据库时,相应的时间戳列总是重置为 0000-00-00 00:00:00
。如果我回显 strtotime($_POST['schedule'])
我得到一个有效的 UNIX 时间戳。
也无法将 bind_param 从 s
更改为 i
。
我觉得我犯了一个微不足道的错误,但无法理解它是什么。我做错了什么?
我发现解决此问题的唯一方法是使用以下内容并更改格式:
$date = DateTime::createFromFormat('d-m-Y', $_POST['schedule']);
$date = $date->format('Y-m-d');
$stmt = $mysqli->prepare("INSERT INTO campaigns (schedule) VALUES (?)");
$stmt->bind_param("s", $date);
$date = date_create($_POST['schedule']);
$stmt = $mysqli->prepare("INSERT INTO campaigns (schedule) VALUES (?)");
$stmt->bind_param("s", date_format($date, 'Y-m-d H:i:s'));
试试这个。更改格式。