Php 使用'插入和检索自己的数据&引用\
愚蠢的问题,但想不出答案,我使用addslashes和removeslashes将数据添加到我的mysql中,但是当检索它时,它也会删除不是由函数生成的普通\项,有没有更好的方法不用str_replace来实现这一点?向数据库传递参数有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将被传递到数据库中,而不是用于转义/的
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引号模式时才有效:你在用你那该死的多余事实来破坏我的恐吓策略!