我正在寻找一种解决方案,用于将用户输入从设置为“datetime-local”值的 HTML 输入捕获到 MySQL 数据库中,并将表字段设置为“datetime”。每当我提交表单时,都会生成一个 ID 并保存日期,但不会保存时间。例如:2018-11-20 00:00:00。
我的 HTML:
<form class="" action="/index.php" method="post">
<input type="datetime-local" name="myDate" id="myDate"><br /><br />
<button id="submit" value="submit">Submit</button><br /><br />
</form>
我的 PHP:
// Check Our Connection
if ( $mysqli->connect_error ) {
die( 'Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli->connect_error );
}
// Insert Our Data
$sql = "INSERT INTO test_one ( mydate ) VALUES ( '{$mysqli->real_escape_string($_POST['myDate'])}' )";
$insert = $mysqli->query($sql);
// Print Response from MySQL
if ( $insert ) {
echo "Success! Row ID: {$mysqli->insert_id}";
} else {
die("Error: {$mysqli->errno} : {$mysqli->error}");
}
// Close Connection
$mysqli->close();
我从 Youtube 上的教程中获得了代码,到目前为止它正在运行。我只是希望能够获得他们选择的时间。
更新: 时间正在节省,不过似乎是军用时间。例如:输入 = 11/22/2018 5:00 PM ;输出 = 2018-11-22 17:00:00
第一条评论后更新: 这将我定向到失败的 HTTP 请求 -
// Check Our Connection
if ( $mysqli->connect_error ) {
die( 'Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli->connect_error );
}
// Insert Our Data
$date = strftime('%Y-%m-%d %H:%M:%S', strtotime(real_escape_string($_POST['myDate'])));
$sql = "INSERT INTO test_one ( mydate ) VALUES ( '{$mysqli->real_escape_string($_POST['$date'])}' )";
$insert = $mysqli->query($sql);
// Print Response from MySQL
if ( $insert ) {
echo "Success! Row ID: {$mysqli->insert_id}";
} else {
die("Error: {$mysqli->errno} : {$mysqli->error}");
}
// Close Connection
$mysqli->close();
如果它与 $date 周围的“”有任何关系,我已经尝试过但没有得到相同的错误。
提前谢谢您!
最佳答案
问题是 datetime-local中间加一个T,即2018-11-19T10:52:23。您必须更改格式才能删除 T。也许可以尝试以下操作:
$date = strftime('%Y-%m-%d %H:%M:%S', strtotime(real_escape_string($_POST['myDate'])));
关于php - 将带有日期时间值的 HTML 输入发布到 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53385909/