繁体   English   中英

PHP mysqli_real_escape_string问题

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

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