首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/MySQL数据库图片库删除

问PHP/MySQL数据库图片库删除
EN

Stack Overflow用户
提问于 2010-09-20 22:57:15
回答 4查看 665关注 0票数 0

我在使用php从mysql数据库中删除图片时遇到了麻烦。向数据库添加图像效果很好,它将显示/检索图像没有问题,但不会正确删除它们。它不会删除选定的图像,始终是数据库中的第一个图像。我已经使用特定的文件名和id对它进行了测试,所以我知道它是有效的,只是它似乎没有针对所选的图像。

图片库表由: id,imagename,assoc_table(类别)&assoc_object(page-image-is-attached to)组成。

希望这是有意义的,并提前感谢你。

以下是用于添加和显示图像的代码:

代码语言:javascript
复制
$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'].'" alt="'.$galleryResult['id'].'" width="120" height="120" class="image" /><br />
                      <label for="delGallery"><input type="checkbox" name="delGallery" value="1" /> Delete this image?</label><br />    
                      </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).'    

这是用于从数据库中删除的代码:

代码语言:javascript
复制
if ($_POST['delGallery']=='1') {
         file_exists($galleryFileDir.'/'.$_POST['imagename']) ? unlink($galleryFileDir.'/'.$_POST['imagename']) : NULL;                 
         unset($_POST['imagename']);                  
            $sql = "DELETE FROM isgallery WHERE imagename = '".$_POST['imagename']."'";
            mysql_query($sql);                
    } 
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-20 23:00:28

问题在于你的未设置:

代码语言:javascript
复制
 unset($_POST['imagename']); 

在运行查询之前。

另一件重要的事情是:防止sql injection使用mysql_real_escape_string

票数 1
EN

Stack Overflow用户

发布于 2010-09-20 23:00:00

移动

代码语言:javascript
复制
unset($_POST['imagename']);  

在第二个示例中的$sql之后。您正在删除$_POST‘’imagename‘并尝试在以后使用它。

票数 0
EN

Stack Overflow用户

发布于 2010-09-20 23:00:21

这里有些地方不对劲:

代码语言:javascript
复制
unset($_POST['imagename']);                  
$sql = "DELETE FROM isgallery WHERE imagename = '".$_POST['imagename']."'";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3752650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档