那是因为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将查询的列绑定到变量,并使用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
}