繁体   English   中英

MySQLi命令不同步,带有简单的query()函数

[英]MySQLi Commands out of sync, with simple query() function

我不知道为什么我的Commands out of sync; you can't run this command now Commands out of sync; you can't run this command now错误。 我似乎找不到解决此问题的方法。

正如您可能从代码中看到的那样,我需要执行两个SQL语句。 一个检查密码是否正确,另一个仅在前一个返回true时才运行,以将所有用户数据存储在会话变量中。

这是我的代码:

$check_pw_query = $conn->query("CALL checkPassword('{$username}', '{$password}')");
$check_pw_fetched = $check_pw_query->fetch_assoc();
$check_pw_query->close();

if($check_pw_fetched['password_correct']) {

    unset($check_pw_fetched);

    if(!$get_user_data = $conn->query("CALL getUserData('{$username}')")/*->fetch_assoc()*/) {
        echo $conn->error;
    }

    $_SESSION["user_username"] = $username;
    $_SESSION["user_id"] = $get_user_data["id"];
    $_SESSION["user_name"] = $get_user_data["name"];
    $_SESSION["user_email"] = $get_user_data["email"];
    $_SESSION["user_type"] = $get_user_data["type"];

    $conn->close();
    unset($conn);
    send_home(false);

}

非常感谢您的帮助。

谢谢

好的,因为没有真正有用的答案,所以我自己回答,以希望帮助其他遇到相同问题的人。

问题在于,无论何时调用存储过程,它都会输出一个在任何地方定义的结果。 因此,如果您的过程返回1值,则php将得到2。最后一个仅是告诉您没有更多值。 但是您还必须处理该问题以释放连接(在我的示例中$conn )。

因此,您只需在$check_pw_query->close();之后$check_pw_query->close(); ,将其添加到代码中$check_pw_query->close();

$conn->next_result();

那里有它。 现在它将正常运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM