[英]PHP integer value in SQL query
这里$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'
看到问题了吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.