(在发布之前,我在这里看了所有相关的问题,并调整了代码,没有效果)。所以情况就是这样:我有一个书籍数据库,我已经添加了一个日期字段(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]);
}
UPDATE :var_dump在get_post之后立即显示$ _POST ['stamp']为NULL;还有以下错误:
注意:未定义的索引:2000-01-01在第69行的C:\ xampp \ htdocs \ experiment \ woldofbooks \ news.php中:$ stamp = get_post($ conn,'stamp');的var_dump($ _ POST [$邮票]);
注意:未定义索引:2000-01-01在C:\ xampp \ htdocs \ experiment \ woldofbooks \ news.php第70行:$ stamp = date('Ymd H:i:s',strtotime($ _ POST) [$邮票]));的var_dump($ _ POST [$邮票]);
注意:第70行的C:\ xampp \ htdocs \ experiment \ woldofbooks \ news.php中的未定义索引:1970-01-01 01:00:00
答案 0 :(得分:2)
您使用变量$stamp
作为POST数组中的键和值。
$stamp = get_post($conn, 'stamp');
$stamp = date('Y-m-d H:i:s', strtotime($_POST[$stamp]));
第1行返回$_POST['stamp']
的内容,然后您使用第2行将$ _POST值转换为日期。
您在第2行中所做的是告诉PHP使用实际上从第1行返回的内容值的键查找$ _POST变量。
注意:未定义索引:1970-01-01 01:00:00 in 第70行的C:\ xampp \ htdocs \ experiment \ woldofbooks \ news.php
完美地描述它,这应该向您显示确切的错误及其解决方案。
解决方案:
您不需要在第2行中运行$_POST
,因为第1行返回了$_POST
值,因此:
$stamp = get_post($conn, 'stamp');
$stamp = date('Y-m-d H:i:s', strtotime($stamp));
具体回答您的原始查询,您的MySQL被赋予NULL
值,这就是日期字段未被更新的原因。