php - Doctrine 查询语法错误

标签 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 '\'

最佳答案

使用 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 cacheresult cache key 更改,这基本上意味着您会损失巨大的性能。

关于php - Doctrine 查询语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15428075/

相关文章:

php - 选择表 A 中需要表 B 中的信息的列的最简单方法?

symfony - JMSI18nRoutingBundle 可以使用 HTTP Accept-Language 数组吗?

php - 无法将数据插入多个数据库 Codeigniter(MongoDB 和 MySQL)

php - Codeigniter 将页面相互链接

c# - 典型的基于浏览器的 Web 解决方案可以利用缓存吗?

php - 错误: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'username' cannot be null

php - 如何通过属性'()查找所有?

symfony - Symfony2 : Email error not send

php - jquery 在添加 html 后向 div 添加切换功能

php - mysql 对应 php 的 in_array