查询
SELECT * FROM foo WHERE bar REGEXP "foo-bar";
按预期返回结果,但是在执行我认为在 Drupal 中等效的功能时
db_query("SELECT * FROM foo WHERE bar REGEXP (:regex)", array("regex"=>"\"foo-bar\""));
不返回任何结果..我想知道这是否可能是由于连字符与正则表达式范围等一起使用而引起的,但找不到任何相关的解决方法。
编辑:虽然我已经尝试过类似于罗宾斯之前的帖子,但按照这个思路,以下返回结果:
$bar = db_query("SELECT * FROM foo WHERE bar LIKE '%foo-bar%' ")
但是,
$bar = db_query("SELECT * FROM foo WHERE bar LIKE ':regex' ", array("regex"=>"%foo-bar%"));
或任何变体(例如将百分比从参数移动到查询)都不会。
我想知道我是否做错了,或者是否存在字符串替换被 drupal 转义的问题,但是 Drupal db_query documentation在参数中没有提到正则表达式,并且我不相信连字符会出于安全/显示目的而被转义。
ps。温柔一点,这是第一篇 Stackover Flow 帖子,也是 Drupal 和 MySQL 的新手;)
最佳答案
SELECT * FROM foo WHERE bar LIKE '%foo-bar%'
这对你有用。
关于mysql - 在 db_query 正则表达式中使用连字符/破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25758797/