Doctrine查询语法错误

时间:2013-03-15 08:49:37

标签: php mysql symfony doctrine-orm symfony-2.1

我在数据库中有一个值,例如 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 '\'

1 个答案:

答案 0 :(得分:3)

使用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注入。

此方法的另一个相关点是DQL字符串保持不变。每次更改DQL时,query cacheresult cache键都会发生变化,这基本上意味着您会遇到巨大的性能损失。