У меня возникли проблемы с удалением изображений из базы данных 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);
}
проблема заключается в том, что вы не уверены:
unset($_POST['imagename']);
перед запуском запроса.
еще одна важная вещь: предотвратить sql injection использовать mysql_real_escape_string
переместить
unset($_POST['imagename']);
после $sql во втором примере. Вы удаляете $_POST ['imagename'] и пытаетесь использовать его впоследствии.
Пожалуйста, проверьте, что пользователь, которого вы используете, имеет разрешения на удаление, предоставленные в этой таблице,
Надеюсь, что поможет
Что-то не так:
unset($_POST['imagename']);
$sql = "DELETE FROM isgallery WHERE imagename = '".$_POST['imagename']."'";