Ich habe eine MySQL-Abfrage, die funktionierte, bis ich es änderte, um vorbereitete Anweisungen zu verwenden. Ich kann nicht erklären, warum ich diesen Fehler erhalte:PHP: Warum mysqli_fetch_assoc() wird nicht funktionieren? Ich verwende mysqli_stmt_get_result()
mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, object given
Die Abfrage (dieses Protokoll in Form) sollte nur ein Ergebnis zurück:
$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'];
...
Warum nicht funktioniert? Die Abfrage selbst sollte ein Array mit diesem Ergebnis zurückgeben, das die Benutzername-E-Mail, das Passwort (ein Hash-Wert, tatsächlich), seine Rolle usw. enthält.