[英]PHP mysqli_real_escape_string problems
我有几个post变量,我通过以下方式运行:
$input_name = mysqli_real_escape_string($dbc, trim($_POST['input_name']));
我已经运行了几个测试,我在插入查询执行之前回显$ input_name和其他类似的变量。 回声表明他们确实正在逃避它们应该。
但是,当我登录phpmyadmin查看数据库中的条目时,我发现应该转义的字符不是。 我这里有问题吗? 在我的变量声明和我不知道的查询之间发生了什么?
有没有可能影响这个的PHP或服务器设置?
注意:我意识到PDO是要走的路,我不是在这个特定的时刻。
PHP中的* _real_escape_string函数仅用于防止SQL注入,因此它只会更改为“to”和“to”以便以下查询:
SELECT * FROM users WHERE pass = '' OR '1'='1 --
会变成:
SELECT * FROM users WHERE pass = '\' OR \'1\'=\'1 --
这样注入的值就不起作用了。
回声表明他们确实正在逃避它们应该。
这表示您的角色已转义。
当我登录phpmyadmin查看数据库中的条目时,我发现应该转义的字符不是
现在,因为你正在逃避意味着你想要那些字符而不是PHP或你的数据库将它们作为分隔符在内部。
如果你想要像'
在你的输入,因为它是让你在逃避它。 所以现在当数据库(mysql)看到它被转义时,它不会被视为用于MySQL中的字符串文字的single quote
。
如果你没有逃避它,那么MySQL将把两个'
之间的所有部分视为字符串文字。
所以一切都很好,不要担心。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.