2010-09-20 2 views
0

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

Таблица галереи состоит из: 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

Замечание: использование базы данных для хранения изображений не очень удобное решение. Почему бы вам не сохранить изображение на своем сервере и сохранить только адрес в базе данных? – Evert

+1

+1 для Эверта. Это плохая идея хранить файлы в базе данных, хранить там путь. – Chris

ответ

1

проблема ваша снята с охраны:

unset($_POST['imagename']); 

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

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

0

движение

unset($_POST['imagename']); 

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

0

Что-то здесь не так:

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

Пожалуйста, проверьте пользователя, который вы используете имеют УДАЛИТЬ разрешения, предоставленные в этой таблице до,

Надежда, что помогает

Смежные вопросы