PHP/MySQL从数据库中删除图像
我有一个php脚本,用于处理网站的管理部分/页面创建。所有数据都保存到名为“isadmin”的数据库表中。在这个脚本中,我有一个图像上传表单,它将图像添加到单独的数据库“isgallery”,然后在脚本/管理部分显示它们。现在这一切都很好,但我发现不可能删除任何图像。我知道它会删除它们,但我似乎无法获取要添加到mysql delete调用的图像的id。它似乎不存在于while语句之外。(在添加图像后,识别$_POST['imagename']似乎存在问题!) 非常感谢下面的代码和任何帮助。美国 这是删除以下内容的代码:PHP/MySQL从数据库中删除图像,php,mysql,Php,Mysql,我有一个php脚本,用于处理网站的管理部分/页面创建。所有数据都保存到名为“isadmin”的数据库表中。在这个脚本中,我有一个图像上传表单,它将图像添加到单独的数据库“isgallery”,然后在脚本/管理部分显示它们。现在这一切都很好,但我发现不可能删除任何图像。我知道它会删除它们,但我似乎无法获取要添加到mysql delete调用的图像的id。它似乎不存在于while语句之外。(在添加图像后,识别$_POST['imagename']似乎存在问题!) 非常感谢下面的代码和任何帮助。美国
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).'
$galleryQuery=mysql\u query(“从isgallery中选择*,其中assoc\u object='.”“$\u POST['id'].””;
echo''。PHP_EOL;
而($galleryResult=mysql_fetch_数组($galleryQuery)){
回音'
是否删除此图像?
“.$galleryResult['id']”
“.PHP_EOL;
}
回音“
”。PHP_EOL;
echo“添加图像(*.jpg/*.gif):
“.($_POST['imagename']?”
是否删除此图像?
“:空)。”
在显示代码中,将$galleryResult['id']
放在表单中:
<input type="hidden" name="isgallery_id" value="<?php echo $galleryResult['id'] ?>" />
注意事项:
要删除文件,文件名应存储在isgallery表中。从记录的id中获取名称。不要依赖用户提供的文件名
为了清楚起见,我的示例代码很少或根本不执行数据验证/清理。请确保验证并转义插入数据库的数据。在删除库之前,您必须检索附加到要删除的库的图像。在伪代码中:
$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
如果先删除库,则会丢失该库中图像的记录。把它想象成一场高利贷,在要求退款之前先向死气沉沉的借款人开枪。以后不要将图像存储在数据库中,将其存储在文件夹中,让数据库只保存其路径和图像名称。如果需要备份,则无法导出包含图像的表。而且图像在表格中的质量变得非常低。很抱歉,图像存储在一个文件夹中,数据库中只有文件名:)非常感谢您的回复,尽管我无法使其正常工作。非常感谢您的回复。您的答案似乎有效,但仍然没有删除选定的图像,只有最后一个图像。如果我有5张图片,所有图片都具有相同的名称=“iGallery\u id”,那么它如何知道要选择哪一张?它似乎没有获得“价值”。尝试回显$_POST['isgallery\u id',但显示为空白。非常令人沮丧。
$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