No se te ocurra mostrar los errores de mysqli en la pantalla, o los intrusos podrán ver cómo está construida tu tabla si el servidor falla, por lo menos cuando pongas el código en producción (en funcionamiento real). Usa mensajes de error genéricos que no den pistas de nada.
La consulta no necesita () en los interrogantes, bórralos. Tampoco te recomiendo que uses el asterisco, por motivos que verás despues.
Código PHP:
Ver original$sentencia = $mysqli->prepare("SELECT contrasena, salt_contrasena FROM CP_usuarios WHERE usuario = ?");
Las consultas preparadas no se ejecutan con query. Se ejecutan con
Código PHP:
Ver original$sentencia->bind_result($contrasena, $salt);
Hay que poner una variable (no importa que no esté declarada) por cada campo que devuelva el select, en el mismo orden en el que los declaraste. Si usaras asterisco en la consulta, el asunto para recuperar los parámetros se complica mucho. No te digo cómo se hace porque te liarás. Mejor indicarlos como te he puesto.
Si la consulta devolviera muchas filas, se utiliza el bucle
while($sentencia->fetch()) { //blablabla }
Pero a tí te basta con ejecutarlo una vez, porque sólo se espera un resultado.
Y ya puedes empezar a utilizarlos:
Aunque no estaría demás comprobar que la consulta te devolvió exactamente 1 resultado. Eso se hace con
Justo después del EXECUTE. Eso pasará los resultados de la consulta a un buffer, lo que permitirá consultar el número de filas devueltas con