gpt4 book ai didi

PHP:为什么 mysqli_fetch_assoc() 不起作用?我正在使用 mysqli_stmt_get_result()

转载 作者:行者123 更新时间:2023-11-29 06:09:54 26 4
gpt4 key购买 nike

我有一个 MySQL 查询一直在运行,直到我更改它以使用准备好的语句。我不明白为什么会出现此错误:

mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, object given

(此登录表单的)查询应该只返回一个结果:

    $conectar = mysqli_connect(localhost, USER, PASS, DATABASE);

//from the log in form
$email = $_POST['email'];
$clave = $_POST['clave'];

//this should get me just one result: the user to which the email belongs.
$consulta = "SELECT usuarios.userID, usuarios.userPass, usuarios.userEmail, usuarios.userPass, usuarios.userFechaGeneracion, usuarios.userNombres, rolesUsuarios.nombreRol,
GROUP_CONCAT(rolesUsuarios.nombreRol SEPARATOR '|') AS roles
FROM rolesUsuarios, usuarios
WHERE usuarios.userEmail=?
AND rolesUsuarios.userID = usuarios.userID
GROUP BY usuarios.userID
";
$buscarUsuario = mysqli_prepare($conectar,$consulta);
mysqli_stmt_bind_param($buscarUsuario, 's', $email);
mysqli_stmt_execute($buscarUsuario);

if (mysqli_stmt_get_result($buscarUsuario)) {
$row = mysqli_fetch_assoc($buscarUsuario);
$originalPass = $row['userPass'];
...

为什么不工作?查询本身应该返回一个包含该结果的数组,其中包含用户名电子邮件、密码(实际上是哈希值)、他的角色等...

最佳答案

你很接近:

    //  vvvvvvv--- this is missing
if ($result = mysqli_stmt_get_result($buscarUsuario)) {
$row = mysqli_fetch_assoc($result);
// ^^^^^^^--- & needs to be used here

原因是$buscarUsuario是一个语句“句柄”,而不是来自数据库的实际结果集。您使用该“句柄”来获取实际结果集。使用文档跟踪逻辑:

mysqli_stmt_get_result接受一个 mysqli_stmt 参数并返回一个 mysqli_result:

mysqli_result mysqli_stmt_get_result ( mysqli_stmt $stmt )

mysqli_fetch_assoc接受一个mysqli_result:

array mysqli_fetch_assoc ( mysqli_result $result )

关于PHP:为什么 mysqli_fetch_assoc() 不起作用?我正在使用 mysqli_stmt_get_result(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38935879/

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