【发布时间】:2016-04-16 02:43:37
【问题描述】:
(发这个之前,我在这里看了很多相关的问题,并调整了代码,没有效果)。所以情况是这样的:我有一个书籍数据库,我向其中添加了一个日期字段(Bookdate)。现在我想更新以前记录的日期,我正在使用以下代码:
$stamp = get_post($conn, 'stamp');
$stamp = date('Y-m-d H:i:s', strtotime($_POST[$stamp]));
(get_post 函数只返回$conn->real_escape_string($_POST[$var]))。但是,我输入表格的日期永远不会在数据库中更新,而是读取 1970-01-01 - 我理解这是 Unix epoc 的事情。我通过以下表格接受日期详细信息:
Date <input type="text" name="stamp" value="<?php echo $row[8]; ?>">
$row[8] 这里是我希望更新的 Bookdate 字段。
带有 SQL 更新查询的代码块如下。 请注意该代码适用于更新所有其他字段,但更新日期无效 - 它仍为 1970-01-01,而我尚未更新的其他记录为 0000-00 -00。以下查询中的 Bookdate=NOW() 很好地将字段更新为当前日期。那么我传递的变量有什么问题,即。 $邮票.??非常感谢您对此的任何帮助。
if ($_FILES['image2'])
{
$ed_author = get_post($conn, 'ed_author');
$ed_title = get_post($conn, 'ed_title');
$ed_category = get_post($conn, 'ed_category');
$ed_year = get_post($conn, 'ed_year');
$hid_isbn = get_post($conn, 'hid_isbn');
$stamp = get_post($conn, 'stamp');
$stamp = date('Y-m-d H:i:s', strtotime($_POST[$stamp]));
if($_FILES['image2']['error'] != UPLOAD_ERR_NO_FILE){
$filetmp = $_FILES["image2"]["tmp_name"];
$filename = $_FILES["image2"]["name"];
$filetype = $_FILES["image2"]["type"];
$filepath = "images/".$filename;
move_uploaded_file($filetmp, $filepath);
$query = "UPDATE classics
SET author='$ed_author', title='$ed_title',
`type`='$ed_category', `year`='$ed_year',
filename='$filename', filepath='$filepath',
filetype='$filetype', Bookdate='$stamp'
WHERE isbn='$hid_isbn'";
$result = $conn->query($query);
if (!$result) echo "EDIT with image failed: $query<br>" .
$conn->error . "<br><br>";
$result = $conn->query($query);
} else {
$query = "UPDATE classics
SET author='$ed_author', title='$ed_title',
`type`='$ed_category', `year`='$ed_year',
Bookdate='$stamp'
WHERE isbn='$hid_isbn'";
$result = $conn->query($query);
if (!$result)
echo "EDIT with image failed: $query<br>" . $conn->error . "<br><br>";
}
}
这是包含日期的表格(也显示已经存在的内容):
<form action="news.php" method="post" enctype="multipart/form-data"> <pre>
Author <input type="text" name="ed_author" value="<?php echo $row[0]; ?>">
Title <input type="text" name="ed_title" value="<?php echo $row[1]; ?>">
Category <input type="text" name="ed_category" value="<?php echo $row[2]; ?>">
Year <input type="text" name="ed_year" value="<?php echo $row[3]; ?>">
ISBN <input type="text" name="hid_isbn" value="<?php echo $row[4]; ?>"readonly>
Date <input type="text" name="stamp" value="<?php echo $row[8]; ?>">
<input type="hidden" name="oldfilename" value="<?php echo $row[5]; ?>">
<input type="hidden" name="oldfilepath" value="<?php echo $row[6]; ?>">
<input type="hidden" name="oldfiletype" value="<?php echo $row[7]; ?>">
<input type="file" name="image2">
<input type="hidden" name="edit" value="yes">
<input type="submit" name="btn2" value="SUBMIT EDIT">
</pre></form>
为了清楚起见,这里是 get_post 函数:
function get_post($conn, $var)
{
return $conn->real_escape_string($_POST[$var]);
}
更新:var_dump 在get_post 之后将$_POST['stamp'] 显示为NULL;还有以下错误:
注意:未定义索引:C:\xampp\htdocs\experiment\woldofbooks\news.php 第 69 行中的 2000-01-01:$stamp = get_post($conn, 'stamp'); var_dump($_POST[$stamp]);
注意:未定义的索引:C:\xampp\htdocs\experiment\woldofbooks\news.php 中的 2000-01-01 第 70 行:$stamp = date('Ymd H:i:s', strtotime($_POST [$stamp]));var_dump($_POST[$stamp]);
注意:未定义索引:C:\xampp\htdocs\experiment\woldofbooks\news.php 第 70 行中的 1970-01-01 01:00:00
【问题讨论】:
-
你在数据库中的列类型是什么?
-
Bookdate 是一个日期字段。
-
也可能是 $_POST[$stamp] 的样子
-
向我们展示
$_POST['stamp']中的内容,更重要的是向我们展示日期的格式(如果存在)。你也有强制执行日期格式的方法 -
如果 var_dump 将 $_POST['stamp'] 显示为 NULL,那么您的表单提交数据就是问题所在。或者您使用
get_post函数传递数据是问题所在。你能告诉我们get_post函数的实际作用吗?如果您使用method="post"发布表单
标签: php sql date sql-update