gpt4 book ai didi

php - MySQLi 命令不同步,使用简单的 query() 函数

转载 作者:行者123 更新时间:2023-11-30 22:52:30 25 4
gpt4 key购买 nike

我不明白为什么我的命令不同步;您现在无法运行此命令 错误。我似乎找不到解决此问题的方法。

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

这是我的代码:

$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(); 之后:

$conn->next_result();

就是这样。它现在可以完美地工作。

关于php - MySQLi 命令不同步,使用简单的 query() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27731236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com