在D7中的db_query中使用LIKE


19

我在Drupal 6中有这样的查询:

$sql = 'SELECT sid, score FROM search_index WHERE word LIKE "%%%s%%"';
$result = db_query($sql,$search_term);

它运行良好,但是现在我要升级到Drupal 7。

我读了一下,这应该可以用,但事实并非如此:

$sql = 'SELECT sid, score FROM search_index WHERE word LIKE "%:term"';
$result = db_query($sql,array(':term'=>$search_term));

有人知道我在做什么错吗?

Answers:


18

尝试这个。

 $sql = 'SELECT sid, score FROM {search_index} WHERE word LIKE :term';
 $result = db_query($sql, array(':term' => '%' . db_like($search_term)));

2
db_like ...?为什么选择Drupal,为什么要这么做?
库米

是的,Drupal的7引入了一个新的DB API,如db_select()db_insert()db_update()db_condition()db_like(),等代替使用db_query(),但建议使用db_select()。看到这里drupal.org/developing/api/databaseapi.drupal.org/api/drupal/includes!database!database.inc/group/...
Sithu

6
@Coomie如果您查看db_like,您将看到转义是由DB层基于每个引擎专门完成的。出于可移植性原因而这样做。
mpdonadio

第一行以逗号结尾是否正确?
听到

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.