2012-01-02 23 views
5

Estoy intentando ejecutar múltiples consultas en mi base de datos usando MySQLi. Este es mi código:Declaración preparada de MySQLi que devuelve falso

$stmt = $mysqli->prepare('SELECT password FROM `users` WHERE username=? LIMIT 1'); 
$stmt->bind_param('s', $username); 
$stmt->execute(); 
$stmt->bind_result($hashedPass); 
$stmt->fetch(); 

/* Check the passwords match */ 
$pwdHasher = new PasswordHash(8, FALSE); 
if(!$pwdHasher->CheckPassword($password, $hashedPass)) 
    exit; 

$stmt = $mysqli->prepare('SELECT u_id FROM `users` WHERE username=? LIMIT 1'); 
$stmt->bind_param('s', $username); 
$stmt->execute(); 
$stmt->bind_result($u_id); 
$stmt->fetch(); 

Pero cuando se ejecuta el código me sale este error:

Fatal error: Call to a member function bind_param() on a non-object in C:\wamp\www\ajax\login.php on line 42 

He comprobado la existencia de los campos de la base, por lo que no es eso. La primera consulta funciona, parece ser la segunda que no funciona. He ejecutado la consulta solo en phpMyAdmin y eso produce un conjunto de resultados con éxito, así que realmente no sé lo que está mal.

+0

que 'bind_param()' llamada ¿verdad? el primero para la contraseña o el segundo para el campo 'user_id'? ¿Y por qué no usas solo una consulta? – Progman

Respuesta

8

prepare devuelve un error si ocurre un error. intente

$stmt = $mysqli->prepare('SELECT u_id FROM `users` WHERE username=? LIMIT 1'); 
if ($stmt === FALSE) { 
    die ("Mysql Error: " . $mysqli->error); 
} 

y se mostrarán algunos errores de mysql.

Cuestiones relacionadas