Mysqli SELECT所有不;t从数组返回


Mysqli SELECT all that don't return from a array

我正在为一个拥有客户管理系统的网站建立后台,他们的会员资格必须每月更新。

在这一点上,我有一个上个月已经付款的所有userId的数组,我想查询其中哪些还没有付款。

恢复:(1,2,3,4,5,6,7和8)已支付上月会员费,本月只有(1,2)续订。所以我想呼应(3,4,5,6,7和8)。

如何在单个查询中完成此操作?如果有帮助的话,我使用的代码与此非常相似:

SELECT userId FROM membership
    WHERE userId IN ($array) AND MONTH(payement) = MONTH(NOW()) 

首先,您必须使用implode():将数组转换为字符串

<?php
    $str = implode(",",$array);
    $que = "SELECT userId FROM membership WHERE userId IN ($str) AND MONTH(payement) = MONTH(NOW())";
?>

我假设您的数组中充满了一个查询。然后你可以使用:

因此,您选择上个月付款的所有用户ID和本月查询中未付款的用户ID(如果这样做,则为:-)

我建议您使用php来确定月份。所以你的代码看起来像:

$previousMonth=date('m', strtotime(date('Y-m')." -1 month"));
$thisMonth=date('m');
$sql = "SELECT userId FROM membership WHERE MONTH(payement) =".$previousMonth. " AND userId NOT IN (SELECT userid FROM membership WHERE MONTH(payement) = ".$thisMonth.";";