2015-04-22 81 views
-1

在我的函数的执行,出现错误:PHP GCM未定义指数

[23-Apr-2015 01:08:39 Europe/Berlin] PHP Notice: Undefined index: syncNewData in C:\xampp\index.php on line 972

为线:$pushMessageTag = isset($_POST["syncNewData"]) ? $_POST["syncNewData"] : $_POST["syncNewData"];的功能:

function updateDataGCM($db) { 
    // Get all the GCM regIDs for anyone with new, "unseen" data: 
    $sqlAllRegIds = 'select distinct gcm_registration_id 
        from users 
        where id in (
        select distinct myId as usersID from group_messages WHERE `read` = 1 
        UNION 
        SELECT distinct touid as usersID from messages where `read` = 1 
        UNION 
        SELECT distinct invited_id as usersID from event_invites where `status` = 1 
        UNION 
        select distinct receiver_id as usersID from group_invites where `status` = 1 
        UNION 
        select distinct requestId as usersID from friends where `status` = 1 
        )'; 

    // Execute 
    if ($resultIds = $db->query($sqlAllRegIds)) 
    { 

     $pushMessageTag = isset($_POST["syncNewData"]) ? $_POST["syncNewData"] : $_POST["syncNewData"]; 
     $gcmRegIds = array($resultIds); 
     $message = array("syncNewData" => $pushMessageTag); 
     $pushStatus = sendPushNotificationToGCM($gcmRegIds, $message); 
     return $pushStatus; 
    } 

} 

我不明白为什么这个错误会发生,如何缓解?

UPDATE:

这是,在用户发送消息时,将发送的同步消息发送到GCM的操作:

case "sendGroupMessage": 
     if ($userId = authenticateUser($db, $username, $password, $gcmregid)) 
     { 
      if (isset($_REQUEST['toGroupId'])) 
      { // instead of toUserName it's to a groupId 
       $toGroupName = $_REQUEST['toGroupName']; 
       $toGroupId = $_REQUEST['toGroupId']; 
       $message  = $_REQUEST['messageText']; 
       $campaign = $_REQUEST['campaign_id']; 
       $location = $_REQUEST['location_id']; 

       // Query to get the users id's who are in the group but not the user sending the message   
       $sqlGroupMembers = "SELECT DISTINCT usersId from users_groups 
        WHERE usersId != '".$userId."' AND groupId = '".$toGroupId."'"; 


       // Loop to create a copy of message for all users taht are part of that group 
       if($getGroupMembersId = $db->query($sqlGroupMembers)) 
       { 
        while($rowGroupMembers = $db -> fetchObject($getGroupMembersId)) 
        { 
         $sql22 = "INSERT INTO `group_messages` ..."     

         error_log("$sql22", 3 , "error_log"); 
         if ($db->query($sql22)) 
         { 

          $out = SUCCESSFUL; 

         }    
         else 
         { 
          $out = FAILED; 
         }     

        }    


       } 

       // Send GCM to turn on devices: 
       echo updateDataGCM($db);     

      } 
      else 
      { 
       $out = FAILED; 
      }   

     } 
     else 
     { 
      $out = FAILED; 
     } 
    break; 

原始updateDataGCM()

工作得很好:

function updateDataGCM() { 

    $gcmRegID = 'test id' 
    $pushMessage = $_POST["syncNewData"]; 
    $gcmRegIds = array($gcmRegID); 
    $message = array("syncNewData" => $pushMessage); 
    $pushStatus = sendPushNotificationToGCM($gcmRegIds, $message); 

    return $pushStatus; 
} 
+0

是表单POST方法并执行元件承受的name属性“syncNewData”?这些都是区分大小写的,如果你有错别字。 –

+1

加上这个'isset($ _ POST [“syncNewData”])? $ _POST [“syncNewData”]:$ _POST [“syncNewData”];'通常有''''而不是'isset($ _ POST [“syncNewData”])? $ _POST [“syncNewData”]:'';' –

+0

@ Fred-ii-没有任何形式,这是严格的在我的PHP服务器上,并且在用户db aciton – Sauron

回答

0

Your POST数据不包含名为syncNewData的变量。这条线:

$pushMessageTag = isset($_POST["syncNewData"]) ? $_POST["syncNewData"] : $_POST["syncNewData"]; 

,这似乎是测试该变量的存在,将参考$_POST['syncNewData']它是否被设置。

你可能需要

$pushMessageTag = isset($_POST["syncNewData"]) ? $_POST["syncNewData"] : ''; 

的f,存在将返回变量,或一个空字符串,如果它不

+0

我说过(实际上是两次),他们说他们仍然得到相同的错误。 –

+0

@Fred,或者他们更新了错误的代码,或者他们的代码中的其他地方发生了相同的错误,他们没有正确读取行号。他们现在必须为自己弄明白。 – 2015-04-22 23:39:54

+0

是的,那么Android的东西不是我所知道的,虽然在他们的问题中没有发布Android代码;我肯定知道它不是。至于它为什么被贴上标签,我不知道。错误很可能在他们的Android代码中,而不是他们发布的内容。那,以及不正确的三元组。 –