[英]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.