Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP;命令不同步错误_Php_Mysqli - Fatal编程技术网

PHP;命令不同步错误

PHP;命令不同步错误,php,mysqli,Php,Mysqli,我的数据库中有两个表;用户和朋友。我正在尝试获取与执行查询的用户是朋友的所有用户的信息。问题是我的php代码抛出了一个“命令不同步错误”。 此外,我使用的代码看起来有点“黑客”,请也建议一些其他的选择,如果有的话 错误被抛出foreach循环后的第二行 我的代码: $friends = []; $query = "SELECT friend FROM friends WHERE register_id=? AND status=1"; $stmt = $con->prepare($quer

我的数据库中有两个表;用户和朋友。我正在尝试获取与执行查询的用户是朋友的所有用户的信息。问题是我的php代码抛出了一个“命令不同步错误”。 此外,我使用的代码看起来有点“黑客”,请也建议一些其他的选择,如果有的话

错误被抛出foreach循环后的第二行

我的代码:

$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->close修复了问题。

问题在foreach循环中。
在循环结束时添加$stmt->close修复了问题。

可能重复我尝试过的方法。没有骰子。同样的错误。你是说你已经确保在
foreach
循环中使用了所有查询结果?
register\u id
users
表的主键吗?我还没有回答,只是提供了一个调试建议。如果你已经设法解决了这个问题,把这个解决方案作为一个自我回答,在将来帮助其他人。可能是重复的,我已经尝试过了。没有骰子。同样的错误。你是说你已经确保在
foreach
循环中使用了所有查询结果?
register\u id
users
表的主键吗?我还没有回答,只是提供了一个调试建议。如果你已经设法解决了这个问题,把这个解决方案作为一个自我回答,在将来帮助别人。
$stmt->store_result();
$stmt->close();
$con->next_result();