PHP / MySQL数据库图库删除

时间:2010-09-20 14:57:15

标签: php mysql

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

图库表包含:id,imagename,assoc_table(category)& assoc_object(页图像被附加到)。

希望这是有道理的,并提前多多感谢。

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

$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).'    

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

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);                
    } 

4 个答案:

答案 0 :(得分:1)

问题是你没有设置:

 unset($_POST['imagename']); 

在运行查询之前。

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

答案 1 :(得分:0)

移动

unset($_POST['imagename']);  

在第二个例子中的$ sql之后。您正在删除$ _POST ['imagename']并在之后尝试使用它。

答案 2 :(得分:0)

不对的地方:

unset($_POST['imagename']);                  
$sql = "DELETE FROM isgallery WHERE imagename = '".$_POST['imagename']."'";

答案 3 :(得分:0)

请检查您正在使用的用户之前是否已在该表上授予删除权限

希望有所帮助