2011-04-23 30 views
2

我有一个在where子句中我这样的查询 “WHERE某物REGEXP '[0-9] {5,10}'”使用大括号({})为正则表达式在Drupal db_query

当我运行这个在phpmyadmin查询它返回所有匹配的记录,但在Drupal中它没有result.I认为这是因为Drupal假设所有像“{sth}”作为表。

我该如何解决这个问题?

感谢

+0

虽然Drupal的不使用大括号来分隔表名,我不会期望它在字符串内部这样做。 – 2011-04-23 16:26:05

+0

好的,[源文件](http://api.drupal.org/api/drupal/includes--database.inc/6/source)似乎暗示它确实如此。多么蹩脚。 – 2011-04-23 16:28:28

回答

4

你的理论是correct

在正则表达式中用作重复量词的大括号作为任何其他大括号被删除。通过正则表达式作为参数传递给db_query(),而不是像这样:

db_query('SELECT name from {users} WHERE std RLIKE "%s"', '[0-9]{5,10}'); 

(我已经在您的查询的其他猜测。)

+0

非常感谢。这是正确的方法 – 2011-04-23 16:41:44