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 '\'
4

1 回答 1

3

使用学说 orm 的占位符支持

$query = $em->createQuery('SELECT d FROM MyBundle:MyTable d WHERE d.name = ?1');
$query->setParameter(1, $linkName);

$users = $query->getResult();

这样您就可以防止像您这样的错误,更重要的是:SQL 注入。

这种方法的另一个相关点是 DQL 字符串保持不变。每次更改 DQL 时,查询缓存结果缓存键都会更改,这基本上意味着您会获得巨大的性能损失。

于 2013-03-15T08:59:50.603 回答