繁体   English   中英

SQL查询中的PHP整数值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM