我有一个PHP脚本,用于处理我的网站的管理部分/页面创建。所有数据都保存在名为“isadmin”的数据库表中。在这个脚本中,我有一个图像上传表单,它将图像添加到一个单独的数据库'isgallery',然后在脚本/管理部分显示它们。现在这一切都很好,但我发现不可能删除任何图像。我知道它会删除它们,但我似乎无法将图像的id添加到mysql删除调用中。它似乎不存在于while语句之外。 (一旦图像被添加到arrrghhh,似乎存在识别$ _POST ['imagename']的问题。)。
下面的代码和任何帮助非常感谢。 S上。
这是删除的代码:
if ($_POST['delGallery']=='1') {
$sql = "DELETE FROM isgallery WHERE id = ".mysql_real_escape_string($_POST['isgallery_id']);
mysql_query($sql);
//file_exists($galleryFileDir.'/'.$_POST['imagename']) ? unlink($galleryFileDir.'/'.$_POST['imagename']) : NULL;
//unset($_POST['imagename']);
}
这是显示和添加图片的代码:
$galleryQuery=mysql_query("select * from isgallery where assoc_object = '".$_POST['id']."'");
echo '<ul class="gallery">'. PHP_EOL;
while($galleryResult=mysql_fetch_array($galleryQuery)) {
echo '<li><img src="../../images/properties/gallery/'.$galleryResult['imagename'].'" width="120" height="120" class="image" /><br />
<label for="delGallery"><input type="checkbox" name="delGallery" value="1" /> Delete this image?</label><br />
<p>'.$galleryResult['id'].'</p>
<input type="hidden" name="isgallery_id" value="'.$galleryResult['id'].'" />
</li>
'. PHP_EOL;
}
echo '</ul><br /><br />' . PHP_EOL;
echo '<label for="galleryFile">Add Image (*.jpg / *.gif): </label><input type="file" name="galleryFile" value=""><br />
'.($_POST['imagename'] ? '
<label for="imagename"></label><img src="../../images/properties/gallery/'.$_POST['imagename'].'" width="120" class="image"><br />
<label for="delGallery"></label><input type="checkbox" name="delGallery" value="1" style="margin:0 0 0 7px;"> Delete this image?<br />
' : NULL).'
答案 0 :(得分:0)
在显示代码中,将$galleryResult['id']
放在表单中:
<input type="hidden" name="isgallery_id" value="<?php echo $galleryResult['id'] ?>" />
然后,在您的删除代码中:
$sql = "DELETE FROM isgallery WHERE id = ".mysql_real_escape_string($_POST['isgallery_id']);
注意:
要删除文件,文件名应存储在isgallery表中。从记录的ID中获取名称。不要依赖用户提供的文件名。
为清楚起见,我的示例代码执行很少或没有数据验证/清理。请务必验证并转义插入数据库的数据。
答案 1 :(得分:0)
在删除图库之前,您必须检索附加到您要删除的图库的图像。在伪代码中:
$galleryID = (int)$_POST['galleryID'];
$result = do_query("SELECT imageID FROM ... WHERE (galleryID = $galleryID);");
while ($row = $result->fetchROw()) {
delete_image($row['imageID']); // delete each image in the gallery
}
do_query("DELETE FROM ... WHERE (gallerID = $galleryID);"); // delete the gallery
如果您先删除图库,则会丢失该图库中图像的记录。可以把它想象成一个贷款人,在要求退款之前拍摄这个不值得的借款人。
答案 2 :(得分:0)
将来不要将图像存储在数据库中,将其存储在文件夹中,并使数据库只保存其路径和图像名称。如果您需要备份,则无法导出包含其中图像的表格。并且图像在桌子上变得非常低质量。