Php 使用'插入和检索自己的数据&引用\

Php 使用'插入和检索自己的数据&引用\,php,mysql,Php,Mysql,愚蠢的问题,但想不出答案,我使用addslashes和removeslashes将数据添加到我的mysql中,但是当检索它时,它也会删除不是由函数生成的普通\项,有没有更好的方法不用str_replace来实现这一点?向数据库传递参数有mysql\u real\u escape\u string()用于mysql_*和mysqli_*,bindParam用于PDO。 此外,当您将其放入SQL查询中时,例如:Hello\/World,只有Hello/World将被传递到数据库中,而不是用于转义/的

愚蠢的问题,但想不出答案,我使用addslashes和removeslashes将数据添加到我的mysql中,但是当检索它时,它也会删除不是由函数生成的普通\项,有没有更好的方法不用str_replace来实现这一点?

向数据库传递参数有
mysql\u real\u escape\u string()
用于mysql_*和mysqli_*,bindParam用于PDO。 此外,当您将其放入SQL查询中时,例如:
Hello\/World
,只有
Hello/World
将被传递到数据库中,而不是用于转义
/
\

PDO->bindParam()

mysql\u real\u escape\u string()。数据库不会存储这些反斜杠。当您再次查询数据库时,它们将不会返回


顺便说一句,
What'ever
的正确转义不是
'What'ever'
,而是
'What'ever'
。在输入字符串上使用
addslashes()
仅在MySQL服务器处于向后兼容模式时有效。

为什么不使用
str\u replace()
?是的,不使用addslashes()或stripslashes(),而是使用MySQL\u real\u escape\u string()插入数据到database@RobinJ因为这会增加额外的代码,所以我只需要用mysql\u real\u escape\u string()替换addslashes,根本不需要使用removeslashes?@SauliusAntanavicius:没错。为了扩展这个答案
mysql\u real\u escape\u string
将为您添加斜杠。当您从数据库中检索数据时,不需要调用
stripslashes
,因为斜杠从未进入数据库;它们就在那里,以便正确插入值。不,MySQL的转义序列一直是一个后座。双单引号只有在启用ANSI引号模式时才有效:你在用你那该死的多余事实来破坏我的恐吓策略!