web-dev-qa-db-ja.com

D7のdb_queryでLIKEを使用する

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));

誰かが私が間違っていることを知っていますか?

18
Coomie

これを試して。

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

次のリンクをフォローアップすると、 http://api.drupal.org/api/drupal/includes!database!database.inc/group/database/7 これにより、

プレースホルダーは「完全な」値でなければならないことに注意してください。たとえば、LIKEクエリを実行する場合、SQLワイルドカード文字%は、クエリ自体ではなく、値の一部である必要があります。

そう

SELECT nid, title FROM {node} WHERE title LIKE :title%;

間違っている。

クエリは

SELECT nid, title FROM {node} WHERE title LIKE :title;
0