此处$id
是整数值,并且不会从MySQL中删除:
$Query="DELETE FROM table WHERE id='.$id.' and cid='".$cid."'";
答案 0 :(得分:3)
您的问题简短:您混合了不同的引号 - "
和'
。
如果您使用 预处理语句 ,则不会出现此问题,因为您将拥有单个字符串文字:
$Query="DELETE FROM table WHERE id=? and cid=?";
这也将消除SQL injections的可能性。
如果您需要多次执行相同的预准备语句,这也会加速(该语句已经准备并且不需要在第二次+调用时解析。
最后,如果您仍在使用officially deprecated PHP mysql extension,必须切换到mysqli,并使用其完整的好处,如预备语句。 mysql扩展不再受到官方支持,将来可能会被删除(虽然我预见它会被移到PEAR左右)。
作为临时解决方案,使用mysql_real_escape_string
编码从用户输入派生的所有变量。请 NOT 使用mysql_escape_string
,因为它非常容易受到字符编码的影响!
答案 1 :(得分:1)
您忘了关闭"
$id = mysql_real_scape_string($id);
$cid = mysql_real_scape_string($cid);
$Query="DELETE FROM table WHERE id='".$id."' and cid='".$cid."'";
问题
所以,如果您按原样echo
发表声明,结果将如下:
DELETE FROM table WHERE id='.1.' and cid='2'
看到问题?