在我的网站管理页面中,我可以删除网上商店的产品,用下面的php代码。(Ajax将此文件称为php文件)。
我的问题是,我需要选择并检查num行,还是删除它,只保留并运行delete查询?
<?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.';
}
}
?>发布于 2018-01-14 01:07:12
在删除任何行之前,不需要选择任何内容。只需使用与选择行相同的条件。
运行delete查询,您可以检查受影响的行数,以查看是否删除了任何内容,如果删除,有多少行。此函数返回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";警告
您已经在使用支持带有有界变量输入的预准备语句的应用程序接口,您应该使用带占位符的参数化查询(预准备语句)来保护您的数据库免受SQL-injection攻击!开始使用mysqli::prepare()和mysqli_stmt::bind_param()。
发布于 2018-01-14 00:58:39
在delete之前,您不需要执行select。
如果没有与条件匹配的行,则delete不会删除任何行。
https://stackoverflow.com/questions/48242142
复制相似问题