2016-04-04 11 views
2

Unten ist mein PHP-Code:JsonArray Nullwert zurückgeben

public function getMainChatList($myPhoneNo){ 

    $stmt = $this->conn->prepare("SELECT receiverPhoneNo,name FROM users,friend WHERE users.phoneNo=friend.receiverPhoneNo AND senderPhoneNo=? AND chatted = 'y' ORDER BY update_time DESC"); 
    $stmt->bind_param("s", $myPhoneNo); 
    $stmt->execute(); 
    $stmt->store_result(); 

    $result = array(); 

    while($row = $stmt->fetch()){ 
     array_push($result,array('receiverPhoneNo'=>$row['receiverPhoneNo'],'name'=>$row['name'],)); 
    }    
    //echo json_encode(array("result"=>$result)); 
    echo json_encode($result); 
    echo json_last_error(); 
    $stmt->close();   
    } 

Und die json Rückkehr

[{"receiverPhoneNo":null,"name":null},{"receiverPhoneNo":null,"name":null}]0 

json_last_error() gibt 0 Ich habe keine Ahnung, warum es null zurück. Und ich führe die SQL-Anweisung auf XAMpp MySQL Server direkt aus. Unten ist das Ergebnis.

result.jpg Danke!

+0

Haben Sie versucht, dass auf Mysql-Konsole die Ausgabe zu sehen diese Abfrage? Ist es möglich, dass diese Felder leer sind? – jonystorm

+0

Hallo Jonestorm. Ich habe das auf der MySQL-Konsole müde und es hat das Ergebnis. – VSCircus

+0

Sie können result.jpg oben klicken, um das Ergebnis zu sehen – VSCircus

Antwort

0

Verwenden Sie einfach bind_result() statt:

public function getMainChatList($myPhoneNo) 
{ 
    $stmt = $this->conn->prepare(" 
     SELECT receiverPhoneNo, name FROM users, friend 
     WHERE users.phoneNo = friend.receiverPhoneNo 
     AND senderPhoneNo = ? 
     AND chatted = 'y' 
     ORDER BY update_time DESC 
    "); 
    $stmt->bind_param('s', $myPhoneNo); 
    $stmt->execute(); 
    // bind 
    $stmt->bind_result($receiverPhoneNo, $name); 

    $result = array(); 

    while($stmt->fetch()){ 
     $result[] = array(
      'receiverPhoneNo' => $receiverPhoneNo, 
      'name' => $name, 
     ); 
    } 

    echo json_encode($result); 
} 
+0

Es funktioniert perfekt. Ich danke dir sehr! – VSCircus

+0

@VSCircus sicher froh, dass dies geholfen hat – Ghost

0

dies das assoziative Array aus der gesamten Abfrage direkt in Ihr $result Array setzen sollte

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);