次のようなクエリがあります。
db_query("SELECT * FROM {foo} WHERE bar LIKE '%supply%' LIMIT %d,%d", 0, 10)
ここで_db_query
_ APIを使用すると、_%s
_が指定された引数に置き換えられ、結果のクエリは次のようになります
_SELECT * FROM foo WHERE bar LIKE '0upply%' LIMIT 0, 0
_
これを克服するためのアイデアはありますか? mysql_query()
を使いたくない
一時的に使用しています_db_query()
Drupal dbクエリで%
記号を別の%
記号でエスケープする必要があるだけです。
db_query("SELECT * FROM {foo} WHERE bar LIKE '%%supply%%' LIMIT %d,%d", 0, 10);
プレースホルダーを使用したい場合は、次のようになります。
db_query("SELECT * FROM {foo} WHERE bar LIKE '%%%s%%' LIMIT %d,%d", 'supply', 0, 10);
私は遅刻して答えますが、それは別の人に役立つかもしれません。
LIKE条件を文字列プレースホルダーとして設定し、その値を引数として関数deb_query()
に渡すだけです。
db_query("SELECT * FROM {foo} WHERE bar LIKE '%s' LIMIT %d, %d", '%supply%', 0, 10);