正在执行if语句的错误部分


Wrong part of if statement being executed

当我从表中删除一条记录时,表中有8列,如果输入的列超过8列,则必须显示没有删除任何内容。然而,我给出的每一个号码,我都得到了相同的回复"成功删除"。这是我的代码:

 $query = "DELETE FROM `order` WHERE orderId = '$_POST[id]'" ;
 $result = mysql_query($query);
 if(! $result )
 {
   echo ("$_POST[id] not deleted !<a href='deleteorder.php'>Back</a>"); 
 }
 else
 {
    echo ("$_POST[id] deleted succesfully! <a href='deleteorder.php'>Back</a>");
 }

$result将是一个有效的结果,即使您的查询不会影响任何行。使用mysql_affected_rows()检查是否删除了任何内容。

$result = mysql_query($query);
if( mysql_affected_rows() == 0 )
{
  echo ("$_POST[id] not deleted !<a href='deleteorder.php'>Back</a>"); 
}
else
{
   echo ("$_POST[id] deleted succesfully! <a href='deleteorder.php'>Back</a>");
}

附带说明:mysql_*函数已弃用。不要用它们来编写新代码,尤其是在学习的时候。请改用mysqli_*或PDO。

您可以使用mysql_affected_rows

$query = "DELETE FROM `order` WHERE orderId = {$_POST[id]}" ;
mysql_query($query);
if(0 == mysql_affected_rows()){
   echo ("$_POST[id] not deleted !<a href='deleteorder.php'>Back</a>");
}else{
   echo ("$_POST[id] deleted succesfully! <a href='deleteorder.php'>Back</a>");
}  

您正在测试您的查询是否成功运行。如果删除一行或不删除任何行,则可以成功。

使用mysql_affected_rows确定是否删除了任何行。

(不过,您最好改用更现代的API)