Php 全局转义变量

Php 全局转义变量,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,为了获得查询结果,我使用以下方法: $result = $this->getEntityManager()->createQuery($dql)->getResult(); 其中$dql变量只是dql查询字符串。问题是,当我在查询字符串的变量中添加撇号时,例如: SELECT * FROM users WHERE login = 'Foo's' 实际上,它只是在输入中键入Foo的字符串,这给了我symfony错误,因为查询字符串没有转义 我如何解决这个问题 我的项目中有很多

为了获得查询结果,我使用以下方法:

$result = $this->getEntityManager()->createQuery($dql)->getResult();
其中$dql变量只是dql查询字符串。问题是,当我在查询字符串的变量中添加撇号时,例如:

SELECT * FROM users WHERE login = 'Foo's'
实际上,它只是在输入中键入
Foo的
字符串,这给了我symfony错误,因为查询字符串没有转义

我如何解决这个问题

我的项目中有很多getResult()方法,还有很多查询,所以我真的不想改变编写查询的整个概念


有办法吗?

最佳解决方案:将查询重写为:bindVariables。
新手解决方案:创建onKernelRequest事件并修改请求对象中的所有内容
最糟糕的解决方案:在app.php中修改$\u POST、$\u GET并重新创建来自globals的请求

附言。 仓库外无查询:)

您需要使用``反斜杠字符来转义单引号。但我不能期望用户在表单中使用反斜杠来前置所有单引号。顺便说一句,addslashes()没有帮助,它仍然会在“…%”中给我错误。addslashes($string)。“%'…”
我不能指望用户在表单中用反斜杠在所有单引号前加上反斜杠
。。。哇,只是哇。开发人员需要验证和调整用户输入。永远不要相信用户的输入!您应该查看准备好的声明和/或PDO@khernik你用我的解决方案解决了你的问题吗?