На моей странице администрирования веб-сайтов я могу удалить продукты из интернет-магазина, используя этот код php ниже. (Ajax вызывает этот php файл).
Мой вопрос в том, что мне нужно выбирать и проверять числовые строки, или удалять их, и просто сохранять и запускать запросы на удаление?
<?php
include_once("../../files/connect.php");
if($_POST)
{
$id = mysqli_real_escape_string($kapcs, $_POST['id']);
$check = mysqli_query($kapcs, "SELECT termek_id, termek_thumb, termek_big FROM termek WHERE termek_id='$id' LIMIT 1");
if(mysqli_num_rows($check) > 0 )
{
/*Galéria törlése, ha van*/
$check_gallery = mysqli_query($kapcs, "SELECT * FROM gallery WHERE gallery_termek_id = '$id'");
if(mysqli_num_rows($check_gallery) > 0 )
{
while($gall = mysqli_fetch_assoc($check_gallery))
{
$DestinationDirectory = "../../images/gallery/";
if(file_exists($DestinationDirectory.$gall['gallery_thumb']))
{
unlink($DestinationDirectory . $gall['gallery_thumb']);
}
if(file_exists($DestinationDirectory.$gall['gallery_big']))
{
unlink($DestinationDirectory . $gall['gallery_big']);
}
mysqli_query($kapcs, "DELETE FROM gallery WHERE gallery_termek_id = '$id'") or die(mysqli_error($kapcs));
}
}
/* Címkék törlése, ha van */
$check_cimke = mysqli_query($kapcs, "SELECT termek_cimke_termek_id FROM termek_cimke WHERE termek_cimke_termek_id = '$id'");
if(mysqli_num_rows($check_cimke) > 0 )
{
mysqli_query($kapcs, "DELETE FROM termek_cimke WHERE termek_cimke_termek_id = '$id'");
}
mysqli_query($kapcs, "DELETE FROM hir_termek_kapcsolo WHERE hir_termek_kapcs_termek = '$id' ") or die("Delete error 2 - " . mysqli_error($kapcs));
$del = mysqli_query($kapcs, "DELETE FROM termek WHERE termek_id = '$id'");
if($del)
{
echo 'Delete ok';
}
else
{
echo 'Delete error;
}
}
else
{
echo 'Nincs ilyen azonosítójú termék.';
}
}
?>
Вам не нужно выбирать что-либо перед удалением любых строк. Просто используйте то же условие, что и выбор строк.
Запустите запрос удаления, и вы можете проверить количество затронутых строк, чтобы увидеть, было ли что-либо удалено или нет, и если да, сколько строк. Эта функция возвращает и целое число с количеством удаленных строк для запроса DELETE
.
mysqli_query($kapcs, "DELETE FROM hir_termek_kapcsolo WHERE hir_termek_kapcs_termek = '$id' ") or die("Delete error 2 - " . mysqli_error($kapcs));
echo mysqli_affected_rows($kapcs)." rows deleted";
ПРЕДУПРЕЖДЕНИЕ
Вы уже используете API, который поддерживает подготовленные операторы с ограниченным вводом переменной, вы должны использовать параметризованные запросы с помощью заполнителей (подготовленных операторов) для защиты вашей базы данных от SQL-инъекций ! Начните работу с mysqli::prepare()
и mysqli_stmt::bind_param()
.
Вам не нужно select
перед delete
.
Если строки не соответствуют условиям, то delete
не удаляет строки.
select
.