1

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

我的数据库中有两个表:

  1. user其中有字段称为id,fcmfcm_enabled
  2. number_list其中有字段称为number,nameuser_id

现在我想向我们从 .json 中的 JSON 获得的任何数字状态发送推送通知1。要发送通知,它需要检查 if fcm_enabled=1,然后它需要从 的用户的字段中获取fcm密钥,并从fcmtable 1nametable 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]);
                }
            }
        }
    }
}

谢谢。

4

1 回答 1

0

如果两个用户的号码相同,则可能是它获取了重复的用户记录。“分组依据”获取号码可以帮助您。

使用以下内容更新了查询:

$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";
于 2018-04-12T04:56:56.957 回答