2016-05-24 11 views
1

Ich verwende den folgenden PHP-Code, um einige Daten aus meiner Datenbank zu holen. Es enthält Chats und Nachrichten zwischen Benutzern in diesen Chats. Ich möchte die Informationen beider Benutzer und die Nachrichten, die sie ausgetauscht haben, zurückgeben. Meine Testdaten haben zwei Chats mit IDs 1 und 2. Es gibt zwei Nachrichten, beide in Chat 1, aber aus irgendeinem Grund werden sie für Chats 1 und 2 zurückgegeben. Ich bin mir nicht sicher, was das Problem in meinem Code ist.Fetch Daten von MySQL in JSON mit PHP

$response = array(); 


$myArray = array(); 
while($row = $user_chats->fetch_array()) 
{ 
$myArray["chatId"] = $row["chat_id"]; 
$myArray["user1_id"] = $row["user1"]; 
$myArray["user2_id"] = $row["user2"]; 
$myArray["user1_name"] = $user1_name; 
$myArray["user2_name"] = $user2_name; 
$myArray["user1_profile_pic"] = $result_user1["profile_pic"]; 
$myArray["user2_profile_pic"] = $result_user2["profile_pic"]; 
$messages = array(); 
$chat_idd = $row["chat_id"]; 
$chat_messages = mysqli_query($conn,"SELECT * FROM messages WHERE chatID = '$chat_idd' ORDER BY timestamp ASC"); 
$count = 1; 
while($roww = $chat_messages->fetch_array()) { 
if ($row["chat_id"] == $roww["chatID"]) { 
$messages["message_id"] = $roww["message_id"]; 
$messages["sender"] = $roww["sender"]; 
$messages["chatId"] = $roww["chatID"]; 
$messages["text"] = $roww["text"]; 
$messages["timestamp"] = $roww["timestamp"]; 
$myArray["message"][$count] = $messages; 
$count = $count + 1; 
} 
else { 
$myArray["message"]= 0; 

} 
} 
$response[] = $myArray; 

} 
echo json_encode($response); 

erzeugt die folgende Reaktion:

[{"chatId":"1","user1_id":"32132132","user2_id":"2121","user1_name":"dwqd", 
 
"user2_name":"dqdwdw","user1_profile_pic":"http:\/\/graph.facebook.com\/dwqwqdqdwdw\/picture?type=large","user2_profile_pic":"WDQdwqwqddqwdqwdq","message":{"1":{"message_id":"24242241","sender":"32132132","chatId":"1","text":"hello i am", 
 
"timestamp":"2016-05-24 17:13:08"},"2":{"message_id":"421421","sender":"32132132", 
 
"chatId":"1","text":"great","timestamp":"2016-05-24 17:15:08"}}},{"chatId":"2","user1_id":"23413524635","user2_id":"32132132","user1_name":false, 
 
"user2_name":"dwqd","user1_profile_pic": 
 
WDQdwqwqddqwdqwdq" ,"user2_profile_pic":"http:\/\/graph.facebook.com\/32132132\/picture?type=large", 
 
"message":{"1":{"message_id":"24242241","sender":"32132132","chatId":"1","text":"hello i am", 
 
"timestamp":"2016-05-24 17:13:08"},"2":{"message_id":"421421","sender":"32132132","chatId":"1", 
 
"text":"great","timestamp":"2016-05-24 17:15:08"}}}]

Antwort

1

Sie müssen $ myArray bei jeder Iteration durch die Schleife initialisieren, z.B.

while($row = $user_chats->fetch_array()) { $myArray = array();