0

$id是整数值,它不会从 MySQL 中删除:

$Query="DELETE FROM table WHERE id='.$id.' and cid='".$cid."'";
4

2 回答 2

3

简而言之,您的问题:您混合了不同的引号 -"'.

如果您使用准备好的语句,则不会出现此问题,因为您将有一个字符串文字:

$Query="DELETE FROM table WHERE id=? and cid=?";

这也将消除SQL 注入的可能性。

如果您需要多次执行相同的准备好的语句(该语句已经准备好并且不需要在第二次+调用时解析),这也会加快您的编程速度。

最后,如果你仍在使用官方弃用的PHP mysql扩展,你必须切换到mysqli并使用它的全部好处,比如准备好的语句。mysql 扩展不再受到官方支持,将来可能会被删除(尽管我预见它将被移动到 PEAR 左右)。


作为临时解决方案,用于对源自用户输入的所有mysql_real_escape_string变量进行编码。请不要使用,因为它很容易受到字符编码的影响!mysql_escape_string

于 2013-04-25T21:21:39.803 回答
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'

看到问题了吗?

于 2013-04-25T21:16:19.050 回答