3

zend db を使用して select の「like」句に関する情報を見つけようとしましたが、成功しませんでした。問題は、LIKE 句の近くでワイルドカード「%」を使用する方法が明確でないことです。

私が最初に使用し、ネット上の何百もの場所で推奨されている悪い考えは、

 $db->select()
    ->where('text LIKE "%'.$query.'%"');

私は、正しい答えは次のようなものになると思います:

 $db->select()
    ->where('text LIKE ?', $query);

ただし、ワイルドカードは使用されていません

いくつかの解決策を試しましたが、すべてうまくいかないようです:

$db->select()
    ->where('text LIKE ?', '%$query%');
$db->select()
    ->where('text LIKE ?', '%{$query}%');

誰かドキュメントを参照するか、これに対する適切な解決策を提供してください。

where() メソッドの 2 番目の引数はオプションです。式に代入する値です。Zend_Db_Select は、値を引用符で囲み、式内の疑問符 ("?") 記号に置き換えます。

十分に伝えていない

4

1 に答える 1

22

% 記号は、クエリにバインドされる変数の一部である必要があります。2 番目の例は、一重引用符ではなく二重引用符を使用している場合に機能します。したがって、次のいずれかを実行できます。

$query = '%'.$query.'%';
$db->select()
   ->where('text LIKE ?', $query);

また:

$db->select()
   ->where('text LIKE ?', "%$query%");
于 2013-01-27T12:25:58.200 に答える