获取MySQL数据并根据另一个MySQL选择操作

时间:2015-10-10 05:39:14

标签: php ios mysql foreach while-loop

我正在创建一个iOS应用程序,我面临着用PHP编写的Web服务部分的困难。我想要实现的是,向设备发送推送通知。我已完成那部分。但是,我需要一种机制来区分已成功传送到手机的通知和尚未通知的通知。我为此目的使用反馈网络服务,它也在工作。有一个具有以下结构的MySQL表。根据每个通知的状态位,我收集与每个设备令牌对应的所有通知,并将其转换为阵列并将其发送到设备。这是我遇到困难的地方。

我有两张桌子。

THis is the notif_status table

此表存储通知ID,设备令牌和通知状态。通过查看此表,我的脚本可以确定通知是否已传递到特定设备。我的脚本收集所有未传递给特定设备ID的通知ID,并使用以下apps_notif表来获取未传递的通知。表格结构如下。

apps_notif table

我的PHP / MySQL脚本如下。

$fecthnotif=mysqli_query($mysqli,"SELECT notif_id FROM notif_status WHERE notif_status=0 AND dev_token='$device_token'") or die(mysqli_error($mysqli));

$d2=array();     
    while($row = mysqli_fetch_assoc($fecthnotif)) {  
    $d2[]=$row;

$json = json_encode($d2);

    $arr = json_decode( $json,true);

到这个时候,我得到了一系列未传递的通知作为JSON。结果如下。

[{ “notif_id”: “124”},{ “notif_id”: “129”}]

现在,我将结果循环如下。

foreach($arr as $item) { //foreach element in $arr
    $uses= $item['notif_id']; }

我想要实现的是从上面的结果中获取每个notif_id,从apss-Notif表中获取所有通知数据,使其成为单个JSON对象并将该有效负载返回给app.So该JSON应该具有所有所有在第一时间未送达的通知的通知数据。

在foreach循环中,我编写了一个查询循环来将所有挂起的通知存储到数组中,但它无法正常工作。

$d=array();

foreach($arr as $item) { //foreach element in $arr
    $uses= $item['notif_id']; //etc
    //echo $uses;
    $sendnotif=mysqli_query($mysqli,"SELECT * FROM apps_notif WHERE notif_id='$uses'") or die(mysqli_error($mysqli));
    while($row = mysqli_fetch_assoc($sendnotif)) {  
    $d[]=$row;
    $i++;
    }
}

编辑:基本上,我想要实现的是从apps_notif表中返回符合条件的行,notif_status = 0(来自表notif_status)和dev_token =“qwerty”(来自apps_notif表)

我可以看到两行符合条件。

2 个答案:

答案 0 :(得分:1)

希望有所帮助

SELECT b.* 
FROM notif_status a 
INNER JOIN apps_notif b ON a.notif_id = b.notif_id 
WHERE notif_status = 0 
  AND dev_token = '$device_token';

使用子查询,

SELECT * 
FROM app_notify 
WHERE notify_id IN (SELECT notif_id 
                    FROM notif_status 
                    WHERE notif_status = 0 
                      AND dev_token = '$device_token') ;

见表。在表1中,您有notify_id,但在table 2date有类似的值。因此,如果您匹配table1 notifyIdtable2 notifyId,您将无法获得所需的输出。首先检查表格的设计方法。

答案 1 :(得分:1)

您可以尝试使用以下PHP代码从2表中获取详细信息并生成JSON对象。没有经过测试的查询,因为我没有相应的数据库表。

$(function(){
    $(".lb_save").click(function(){
        var lb_text = $('.lb_text').val();
        if(lb_text == '')
        {
            alert("Enter Some Text...");
            $('.lb_text').focus();
        }
        else
        {
            $.ajax({
                type: "POST",
                url: "index.php",
                data:{
                    lb_text:lb_text,

                },
                success:function(response){
                    alert('successfully updated');
                }
            });
        }
        return false;
    });
});

希望这会对你有所帮助。