我正在使用下面的代码更新我的经典(书籍)数据库中的字段。问题是,当我只更新文本字段(即。它用空白(或类似于空白的内容)覆盖图像详细信息字段,以便显示更新的文本字段,但显示一个损坏的图像链接。
if (!empty($_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');
$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'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{
$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');
$oldfilename = get_post($conn, 'oldfilename');
$oldfilepath = get_post($conn, 'oldfilepath');
$oldfiletype = get_post($conn, 'oldfiletype');
$query = "UPDATE classics SET author='$ed_author', title='$ed_title', type='$ed_category', year='$ed_year', filename='$oldfilename', filepath='$oldfilepath', filetype='$oldfiletype' WHERE isbn='$hid_isbn'";
$result = $conn->query($query);
if (!$result) echo "EDIT with image failed: $query<br>" .
$conn->error . "<br><br>";
}
我知道问题是:当没有添加新的映像时,image2从来不会测试为空,因此仍然会转到if块(!$_FILES($_FILES“image2”))‘而不是rather。那么,当没有选择图像时,我应该如何检查image2呢?会很感激你的建议。
此外,更完整的是,下面是表单,附加的是在没有添加新图像的情况下进行更新后具有损坏图像链接的记录的图像:
<form action="sqltest.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>
<input type="hidden" name="oldfilename" value="<?php echo $row[6]; ?>">
<input type="hidden" name="oldfilepath" value="<?php echo $row[7]; ?>">
<input type="hidden" name="oldfiletype" value="<?php echo $row[8]; ?>">
<input type="file" name="image2">
<input type="hidden" name="edit" value="yes">
<input type="submit" name="btn2" value="SUBMIT EDIT">
</pre></form>
发布于 2016-01-08 23:25:51
这里的问题是,在提交文件输入时,$_FILES['image2']
确实总是被填充。
您可以尝试以下方法:
var_dump($_FILES['image2'])
。这很可能会导致这样一个事实,例如,您可以检查该字段的error
索引,如下所示:
if (!empty($_FILES['image2']) && $_FILES['image2']['error'] != UPLOAD_ERR_NO_FILE) { ... }
但是,您可能也需要重新构造代码,因为如果您现在不上传图像,所有其他字段都不会更新(因为if -块永远不会执行)。
https://stackoverflow.com/questions/34690784
复制相似问题