2011-04-23 48 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