Lie*_*nau 4 php mysql-real-escape-string
我正在尝试阻止SQL注入的现有网站.之前$_GET['ID']是未经证实的.
$ID=mysql_real_escape_string($_GET['ID']);
$sQuery=mysql_query("select * from tbl_mini_website as s1, tbl_actor_merchant as me where s1.MERCHANT_ID=$ID AND s1.MERCHANT_ID=me.MERCHANT_ID");
Run Code Online (Sandbox Code Playgroud)
如果我在网址的末尾添加一个',mysql_real_escape_string()我得到了这个mysql_error():
您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在第1行的'\\'和s1.MERCHANT_ID = me.MERCHANT_ID'附近使用正确的语法
用了mysql_real_escape_string(),我得到:
您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在第1行的'\'和s1.MERCHANT_ID = me.MERCHANT_ID'附近使用正确的语法
我不确定它是什么?任何帮助将不胜感激.
如果它是一个id,我假设数字,你为什么不把它转换为整数?
$ID = (int) $_GET['ID'];
Run Code Online (Sandbox Code Playgroud)
我能给你的最好建议是检查PDO并使用绑定参数.
mysql_real_escape_string转义,但不引用.
尝试:
$sQuery=mysql_query("select * from tbl_mini_website as s1, tbl_actor_merchant as me where s1.MERCHANT_ID='$ID' AND s1.MERCHANT_ID=me.MERCHANT_ID");
Run Code Online (Sandbox Code Playgroud)
更一般地说,我倾向于将这两个包装在一个函数中,例如:
function quoteValue($value) {
return "'" . mysql_real_escape_string($value) . "'";
}
Run Code Online (Sandbox Code Playgroud)
这很有用,因为您可能会发现需要更精确的引用行为的行(特别是在处理Unicode,控制字符等时)
| 归档时间: |
|
| 查看次数: |
492 次 |
| 最近记录: |