2016-04-10 11 views
0

データベースに2つのテーブルがあります。ユーザー&フレンド。私は、クエリを実行するユーザーと友人であるすべてのユーザーの情報を取得しようとしています。問題は私のPHPコードが "同期外れエラーのコマンド"を投げていることです。 さらに、私が使用したコードはちょっと「ハッキー」に見えます。PHP;コマンドが同期外れエラー

エラーは、foreachループの後の2行目でスローされます。

MY CODE:私が試したWHAT

$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); 

は:

私はこの問題は、のforeachループにあった

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

[コマンドは同期していません。今すぐこのコマンドを実行することはできません](http://stackoverflow.com/questions/614671/commands-out-of-sync-you-cant-run-this-command-now) – Chris

+0

私はそれを試みました。サイコロはありません。同じエラー。 –

+0

あなたは 'foreach'ループでクエリのすべての結果を消費したことを確認したと言いますか? – Chris

答えて

2

を使用しようとしました。 $ stmt-> closeをループの最後に追加すると問題が解決されました。

関連する問題