私はのようなワードプレスで%text%ステートメントを使用します。
SELECT * FROM location WHERE name LIKE "%on" OR name LIKE "%on%"
私は何でも試したが実行されません:
$wpdb->get_results($wpdb -> prepare("SELECT * FROM location WHERE name LIKE %1s OR name LIKE %2s", '%'.like_escape('on'), '%'.like_escape('on').'%'), ARRAY_A);
私を助けてください
$wpdb->prepare()
は実際にはsprintf()
プレースホルダーを完全にはサポートしていません。
コーデックスから :
Prepareのqueryパラメータはsprintf()のようなプレースホルダを受け入れます。 %s(文字列)、%d(整数)、および%f(float)形式がサポートされています。
それはそれから完全に明白ではないが、引数交換フォーマット(例えば%1$d
)はサポートされない(どんな場合でもあなたは間違った構文を持っている:それは%2$s
の代わりに%2s
であるべきです)
global $wpdb;
$wpdb->prepare(
"SELECT * FROM location
WHERE name LIKE %s OR name LIKE %s",
'%'.$wpdb->esc_like('on'),
'%'.$wpdb->esc_like('on').'%'
), ARRAY_A);
私は 'on'が未知の値に置き換えられるかもしれないと思っています - そうでなければ$wpdb->prepare()
は必要ありません。無関係なメモとして、SQLの2番目の条件は最初のものを時代遅れにします。