我正在尝试在处理表单时插入日期,但在MySQL中插入类似
0000-00-00
我不希望用户插入日期。 这是我的表格
<form action="upload.php" method="post" enctype="multipart/form-data">
<textarea type="text" name="text" cols="40" rows="10"></textarea><br />
<input type="hidden" name="dt"/>
<input type="submit" name="upload" id="upload" value="Изпрати" />
这是upload.php
<?php
if (isset($_POST['upload'])) {
$text = $_POST['text'];
$dt = date('Y-m-d', strtotime($_POST['Date']));
$db = new mysqli("localhost", "*****", "", "****");
if (mysqli_connect_error()) {
printf("Connect failed: ", mysqli_connect_error());
}
mysqli_set_charset($db, "UTF8");
$query = "INSERT INTO table (text, date) VALUES (?, ?)";
$conn = $db->prepare($query);
if ($conn == TRUE) {
$conn->bind_param("si",$text, $dt );
if (!$conn->execute()) {
echo 'error insert';
} else {
header("Location: ../admin/index.php");
exit;
}
} else {
die("Error preparing Statement");
}
} else {
echo 'error';
}
?>
可能是什么问题?
编辑:
在mysql中,日期行是type - 'date'
EDIT2:
我忘了NOW()......工作得很完美而且很简单。
答案 0 :(得分:5)
我不希望用户插入日期。
然后不要将其作为用户提交表单的一部分。就目前而言,即使它是hidden
元素,用户也可以修改它以插入他们想要的任何日期值。您不希望用户插入日期,但您当前的代码需要用户插入日期。
如果您只是希望它是一个系统知道日期,您可以在数据库级别的INSERT
语句中完全执行此操作:
INSERT INTO table (text, date) VALUES (?, NOW())
这样,数据库本身就会生成当前日期,而不是依赖用户提交的任何内容。此时,您可以从表单中完全删除日期input
,并从构建数据库查询的PHP代码中删除该参数。
答案 1 :(得分:1)
如果您不希望用户插入日期而不是在服务器端处理它。我的答案是使用PHP
处理,否则你也可以使用NOW()
mysql端处理。选择你:
$dt = date('Y-m-d: H:i:s');
或者您可以将其存储在数据库中作为时间戳:
$dt=date("Y-m-d H:i:s");
$dt= strtotime($dt);
并在前面检索
date("Y-m-d H:i:s",$dt)
答案 2 :(得分:0)
替换代码:
$ query =“INSERT INTO table(text,date)VALUES(?,NOW())”;