MySQLi Multi_Query Post

MySQLi Multi_Query Post

我正在使用 JSON 向我的 PHP API 发送数据。我想用 API 向我的 Android 用户发送推送通知。我正面临一个奇怪的问题。 从 JSON,我正在发送 Mobile NumberMobile Number StatusUser Id

我的数据库中有两个 table:

  1. user 具有名为 idfcmfcm_enabled
  2. 的字段
  3. number_list 具有名为 numbernameuser_id
  4. 的字段

现在我想向我们从 1 中的 JSON 获得的任何号码状态发送推送通知。要发送通知,它需要检查 fcm_enabled=1,然后它需要从 table 1 的用户的 fcm 字段中获取 fcm 键,以及 name 来自 table 2 的名字。

它在正常情况下工作正常,但如果两个用户使用相同的手机号码,那么我会在一台设备上收到两条通知,另一台设备收到一条通知。

我认为我的查询有问题。让我知道是否有人可以帮助我解决我的问题。这两天我一直在尝试,但没有成功。

$number = $_GET["number"];
$status = $_GET["status"];
$userIds = $_GET["userId"];
$sql = "";
for($i = 0; $i < count($number); $i++) {
    if($status[$i] == 1) {
        $sqlSelect = "SELECT t2.name, t1.fcm, t1.fcm_enabled FROM user AS t1 INNER JOIN number_list AS t2 ON t1.id = t2.user_id WHERE t2.number = '$number[$i]'";
        $resultSelect = $conn->query($sqlSelect);
        if($resultSelect) {
            while($row = $resultSelect->fetch_row()) {
                if($row[2] == 1) {
                    sendFCM(array("title" => $row[0] . " is Online", "body" => ""), array("message" => ""), $row[1]);
                }
            }
        }
    }
}

谢谢。

如果两个用户有相同的号码,可能是取了重复的用户记录。 "Group By"取号可以帮到你

更新查询如下:

$sqlSelect = "SELECT t2.name, t1.fcm, t1.fcm_enabled FROM user AS t1 INNER JOIN number_list AS t2 ON t1.id = t2.user_id WHERE t2.number = '$number[$i]'  GROUP BY t1.id";