gpt4 book ai didi

php - 在准备好的语句上使用 fetch_assoc

转载 作者:可可西里 更新时间:2023-11-01 13:46:49 25 4
gpt4 key购买 nike

我目前正在开发一个登录脚本,我得到了这段代码:

$selectUser = $db->prepare("SELECT `id`,`password`,`salt` FROM `users` WHERE `username`=?");
$selectUser->bind_param('s', $username);
$selectUser->execute();

if ($selectUser->num_rows() < 0)
echo "no_user";
else
{
$user = $selectUser->fetch_assoc();
echo $user['id'];
}

这是我得到的错误:

Fatal error: Uncaught Error: Call to undefined method mysqli_stmt::fetch_assoc()

我尝试了各种变体,例如:

$result = $selectUser->execute();
$user = $result->fetch_assoc();

还有更多……什么都没用。

最佳答案

那是因为 fetch_assoc 不是 mysqli_stmt 对象的一部分。 fetch_assoc 属于mysqli_result 类。您可以使用 mysqli_stmt::get_result 首先获取结果对象,然后调用 fetch_assoc:

$selectUser = $db->prepare("SELECT `id`,`password`,`salt` FROM `users` WHERE `username`=?");
$selectUser->bind_param('s', $username);
$selectUser->execute();
$result = $selectUser->get_result();
$assoc = $result->fetch_assoc();

或者,您可以使用 bind_result 将查询的列绑定(bind)到变量并改用 fetch():

$selectUser = $db->prepare("SELECT `id`,`password`,`salt` FROM `users` WHERE `username`=?");
$selectUser->bind_param('s', $username);
$selectUser->bind_result($id, $password, $salt);
$selectUser->execute();
while($selectUser->fetch())
{
//$id, $password and $salt contain the values you're looking for
}

关于php - 在准备好的语句上使用 fetch_assoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38012713/

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