SQL文でIN句を使いたいのですが、$wpdb->prepareを使用するとうまくいきません
-
$wpdb->prepareがとても便利で普段使用しているのですが、IN句のときには、どうやら一工夫が必要みたいで、うまく動作してくれません。
やりたいこと:IDが 1,2,3のいずれかに該当するuserの数をカウント
$some_ID = ‘1,2,3’;
$count_user = (int)$wpdb->get_var( $wpdb->prepare( “SELECT COUNT(user) FROM sample_table WHERE ID IN (%s)”, $some_ID ) );としたところ、全然IDが1,2,3のuserの数をカウントしてくれませんでした。
調べると、IN句をprepareする場合、今回ならIDの数だけ%dを使用する必要があるらしく以下のように書きました。$some_ID = ‘1,2,3’;
$count_user = (int)$wpdb->get_var( $wpdb->prepare( “SELECT COUNT(user) FROM sample_table WHERE ID IN (%d,%d,%d)”, $some_ID ) );しかし、今回も、IDが1,2,3のuserの数をカウントしてくれませんでした。
$some_IDのところに、かわりに直接 1,2,3 と入力すると、想定道理にuserの数をカウントしてくれるのですが、
$some_IDを入れると、1,2,3が、’1,2,3’というひとつの文字列として扱われてしまうようなのです。$some_IDを、文字列の’1,2,3’ではなく、数字の 1,2,3 に変換する方法がわかれば、解決するように思うのですが、そのような方法がわからず、困っています。
どなたか、おわかりになる方がいらっしゃいましたら、どうかお知恵を貸して頂けましたら幸いです。
何卒、宜しくお願い致します。
- トピック「SQL文でIN句を使いたいのですが、$wpdb->prepareを使用するとうまくいきません」には新たに返信することはできません。