Удаление галереи изображений базы данных PHP / MySQL

0

У меня возникли проблемы с удалением изображений из базы данных mysql с использованием php. Добавление изображений в базу данных отлично работает, и оно будет отображать/удалять изображения без проблем, но не удалит их должным образом. Он не удаляет выбранное изображение, всегда первое в базе данных. Я протестировал его, используя определенные имена файлов и идентификатор, поэтому я знаю, что он работает, он просто не нацелен на выбранный образ.

Таблица галереи состоит из: id, imagename, assoc_table (category) и assoc_object (page-image-is-attach-to).

Надеюсь, что это имеет смысл и большое спасибо заранее.

Это код, используемый для добавления и отображения изображений:

$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);                
    } 
  • 1
    вам нужно предотвратить внедрение SQL в ваш код
  • 2
    Примечание: использование базы данных для хранения изображений не очень удобное решение. Почему бы вам не сохранить изображение на своем сервере, а только сохранить URL в базе данных?
Показать ещё 3 комментария
Теги:

4 ответа

1
Лучший ответ

проблема заключается в том, что вы не уверены:

 unset($_POST['imagename']); 

перед запуском запроса.

еще одна важная вещь: предотвратить sql injection использовать mysql_real_escape_string

0

переместить

unset($_POST['imagename']);  

после $sql во втором примере. Вы удаляете $_POST ['imagename'] и пытаетесь использовать его впоследствии.

0

Пожалуйста, проверьте, что пользователь, которого вы используете, имеет разрешения на удаление, предоставленные в этой таблице,

Надеюсь, что поможет

0

Что-то не так:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню