在查询中使用正则表达式时MySQL查询异常

时间:2012-09-18 10:16:59

标签: php mysql regex

PHP(Symfony 2.0):

$term = "3";

$query = $em->createQuery(
     "SELECT * FROM SoftsystemSupportBundle:Shop WHERE sid REGEXP '^$term'"
);

$shops = $query->getResult();    

引发异常:

  

错误:预期识别变量| StateFieldPathExpression |   AggregateExpression | \“(\”Subselect \“)\”| ScalarExpression,得到了   '*'“

我希望获得sid字段与正则表达式匹配的所有实体。

任何想法都错了吗?

1 个答案:

答案 0 :(得分:0)

您正在滥用CreateQuery()方法返回的QueryBuilder对象。

您正在编写DQL(Doctrine查询语言)而不是MySQL。 REGEXP不是DQL关键字,因此是错误。

您对此帖有同样的问题:Using REGEXP in Doctrine 2.X ORM

在那里给出了解决方案。