【发布时间】:2016-08-13 18:44:33
【问题描述】:
我有一个 MySQL 查询正在运行,直到我更改它以使用准备好的语句。 我无法弄清楚为什么会出现此错误:
mysqli_fetch_assoc() 期望参数 1 是 mysqli_result, object 给定
(此登录表单的)查询应该只返回一个结果:
$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'];
...
为什么不工作?查询本身应该返回一个包含该结果的数组,其中包含用户名电子邮件、密码(实际上是散列值)、他的角色等......
【问题讨论】:
标签: php mysql mysqli prepared-statement