2017-05-04 5 views
0

私はあなたの助けが必要です。私はワードプレスでいくつかの電子メールの検証のための小さなプラグインに取り組んでいます、今私は苦労しています。WHERE句の配列からのデータを含むWordpress SQLリクエスト

が、私はIDの配列を取得したいと私は、次のコードでそれらを得る:

function myFuntion() { 
     global $wpdb; 
     $supporterIDArray = $wpdb->get_results("SELECT id FROM myTable WHERE value = 'true' AND field_id = 1"); 
    } 

は今、私のようなIDの未知の数の配列を取得[7、9、34、53、... 。]

その後、このIDを持つ他の行がいくつあるかを調べたいと思います。しかし、私はそれを行う方法がわからない、このようなことができSHOLD ...

global $wpdb; 
$countSupporters = $wpdb->get_results("SELECT COUNT(*) AS allSupporter FROM myTable WHERE value = 'true' AND field_id = '2' AND `id` = **THESE IDS FORM THE ARRAY**"); 
echo $countSupporters -> allSupporter; /*Number of all ROWs which have an ID wich was in the array 

私は十分にそれを説明し、あなたが私を助けることができればとても感謝される願っています。ありがとう!

答えて

0

あなたはINキーワードたい:

$countSupporters = $wpdb->get_results(" 
    SELECT 
     COUNT(*) AS allSupporter 
    FROM 
     myTable 
    WHERE 
     value = 'true' AND 
     field_id = '2' AND 
     id IN (1, 2, 3, 4, 5) 
"); 

あなたは、カンマ区切りリストとしてあなたの配列をフォーマットする必要がありますが。通常、これを行うにはjoin(',', $list)を使用しますが、SQLインジェクションを気にしたいと思うでしょうし、WordPressのクエリシステムに精通していないため、SQLインジェクションの処理方法を知ることができません。

0

これを試してください:あなたの答えのための

$array = implode(",",$your_array); 
$countSupporters = $wpdb->get_results("SELECT COUNT(*) AS allSupporter FROM myTable WHERE value = 'true' AND field_id = '2' AND id IN (".$array.")"); 
+0

感謝を!私は試しましたが、それは私にエラーを与えています: "キャッチ可能な致命的なエラー:クラスstdClassのオブジェクトが文字列に変換できませんでした..." –

+0

まず配列を爆破していますか?私はあなたがそれをもう一度試すことができる編集を作った? – shazyriver

+0

遅れて申し訳ありません。以前と同じ問題がありました。私は今foreachループとカウンターで別の方法を見つけました...それは非常に効率的な方法ではありませんが、それは動作し、それは要求の膨大な数ではありません...とにかくありがとう! –