这$id
是整数值,它不会从 MySQL 中删除:
$Query="DELETE FROM table WHERE id='.$id.' and cid='".$cid."'";
简而言之,您的问题:您混合了不同的引号 -"
和'
.
如果您使用准备好的语句,则不会出现此问题,因为您将有一个字符串文字:
$Query="DELETE FROM table WHERE id=? and cid=?";
这也将消除SQL 注入的可能性。
如果您需要多次执行相同的准备好的语句(该语句已经准备好并且不需要在第二次+调用时解析),这也会加快您的编程速度。
最后,如果你仍在使用官方弃用的PHP mysql扩展,你必须切换到mysqli并使用它的全部好处,比如准备好的语句。mysql 扩展不再受到官方支持,将来可能会被删除(尽管我预见它将被移动到 PEAR 左右)。
作为临时解决方案,用于对源自用户输入的所有mysql_real_escape_string
变量进行编码。请不要使用,因为它很容易受到字符编码的影响!mysql_escape_string
你忘了关闭你的"
$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'
看到问题了吗?