2016-04-10 9 views
0

Ich habe zwei Tabellen in meiner Datenbank; Benutzer & Freunde. Ich versuche, die Informationen aller Benutzer abzurufen, die mit dem Benutzer befreundet sind, der die Abfrage durchführt. Das Problem ist, dass mein PHP-Code einen "Befehl nicht synchronisiert Fehler" wirft. Außerdem sieht der Code, den ich verwendet habe, ein wenig "hacky" aus, bitte schlagen Sie auch eine andere Alternative vor, falls vorhanden.PHP; Befehle, die nicht synchron sind Fehler

Der Fehler wird in der zweiten Zeile nach der foreach-Schleife ausgelöst.

MEIN CODE:

$friends = []; 
$query = "SELECT friend FROM friends WHERE register_id=? AND status=1"; 
$stmt = $con->prepare($query); 
$stmt->bind_param("i",$register_id); 
$stmt->execute(); 
$stmt->bind_result($_friend); 
while($stmt->fetch()) 
    array_push($friends,$_friend); 
$stmt->close(); 
$query = "SELECT register_id FROM friends WHERE friend=? AND status=1"; 
$stmt = $con->prepare($query); 
$stmt->bind_param("i",$register_id); 
$stmt->execute(); 
$stmt->bind_result($_fri); 
while($stmt->fetch()) 
    array_push($friends,$_fri); 
$stmt->close(); 
$con->next_result(); 
foreach($friends as $id){ 
    $query="SELECT username,image,location FROM users WHERE register_id=?"; 
    $stmt = $con->prepare($query);<----- Error thrown here 
    $stmt->bind_param("i",$id); 
    $stmt->execute(); 
    $stmt->bind_result($_username,$_image,$_location); 
    $stmt->fetch(); 
    $arr = [ 
     'name'=>$_username, 
     'image'=>$_image, 
     'location'=>$_location, 
    ]; 
    $contacts[] = $arr; 
} 
sendJson(true,"Friends fetched successfully",$contacts); 

was ich versucht habe:

Ich habe versucht,

$stmt->store_result(); 
$stmt->close(); 
$con->next_result(); 
+0

Mögliches Duplikat von [Nicht synchronisierte Befehle; Sie können diesen Befehl jetzt nicht ausführen] (http://stackoverflow.com/questions/614671/commands-out-of-sync-you-cant-run-this-command-now) – Chris

+0

Ich habe das versucht. Kein Würfel. Derselbe Fehler. –

+0

Sie sagen, Sie haben sichergestellt, dass Sie alle Ergebnisse der Abfrage in Ihrer foreach-Schleife konsumiert haben. – Chris

Antwort

2

Das Problem in der Schleife foreach war zu verwenden. Hinzufügen $ stmt-> schließen am Ende der Schleife das Problem behoben.

Verwandte Themen