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));
誰かが私が間違っていることを知っていますか?
これを試して。
$sql = 'SELECT sid, score FROM {search_index} WHERE Word LIKE :term';
$result = db_query($sql, array(':term' => '%' . db_like($search_term)));
次のリンクをフォローアップすると、 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;