Wordpress SQL请求,包含来自WHERE子句中数组的数据

时间:2017-05-04 14:09:30

标签: php mysql arrays wordpress

我需要你的帮助。我正在开发一个小插件,用于wordpress中的一些电子邮件验证,现在我已经开始了。

我想获得一个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。但我不知道该怎么做,可能会像这样......

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

我希望我解释得足够好,如果你能帮助我,我将非常感激。谢谢!

2 个答案:

答案 0 :(得分: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查询系统不够熟悉,无法知道它们是如何处理的。

答案 1 :(得分: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." )");