2012-01-02 15 views
5

Sto tentando di eseguire più query sul mio database utilizzando MySQLi. Questo è il mio codice:Dichiarazione preparata MySQLi restituisce false

$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(); 

Ma quando il codice viene eseguito ottengo questo errore:

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

Ho verificato che esistono i campi del database, quindi non è così. La prima query funziona, sembra proprio la seconda che non lo fa. Ho eseguito la query da sola in phpMyAdmin e questo produce correttamente un set di risultati, quindi non so davvero cosa c'è che non va.

+0

quale chiamata 'bind_param()' è? il primo per la password o il secondo per il campo 'user_id'? E perché non usi solo una query? – Progman

risposta

8

prepare restituisce false se si verifica un errore. prova

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

e qualche errore mysql dovrebbe essere visualizzato.

Problemi correlati