我在数据库中有一个值,例如 stackover/'!@#/\;"""'.;\';'./,其中包含所有特殊字符。 现在我的问题是如何构建如下查询:
$linkName= // getting from db
$sql_sm="SELECT d FROM MyBundle:MyTable d WHERE d.name = '$linkName'";
我收到一个错误:
[Syntax Error] line 0, col 115: Error: Expected end of string, got '\'
最佳答案
使用 placeholder support of doctrine orm :
$query = $em->createQuery('SELECT d FROM MyBundle:MyTable d WHERE d.name = ?1');
$query->setParameter(1, $linkName);
$users = $query->getResult();
这样您就可以防止像您这样的错误,更重要的是:SQL 注入(inject)。
此方法的另一个相关点是 DQL 字符串保持不变。每次更改 DQL 时,query cache和 result cache key 更改,这基本上意味着您会损失巨大的性能。
关于php - Doctrine 查询语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15428075/