SQL查询中的PHP整数值

时间:2013-04-25 21:14:27

标签: php mysql sql

此处$id是整数值,并且不会从MySQL中删除:

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

2 个答案:

答案 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'

看到问题?