2013-11-09 3 views
0

Я не понимаю, почему этот код не работает. Я получаю эту ошибку:PHP подготовить заявление

Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement.

Я видел несколько примеров. Согласно примерам, он должен работать.

$password = generatePassword(); 
$passwordHash = hash('sha512', $password); 
$random_salt = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true)); 

$passwordHashSalt = hash('sha512', $passwordHash . $random_salt); 
$sqlStatement = $mysqli->prepare('UPDATE members (password, salt) VALUES (?, ?) WHERE username = ?'); 
$statement->bind_param('sss', $passwordHashSalt, $random_salt, $username); 
+3

'$ statement' ==' $ sqlStatement' –

+1

Благодарю вас! Я не знаю, как я не могу видеть эту глупость. – wanttobeprofessional

ответ

-1

В вашем параметре связи отсутствует последний параметр строки. Даже если это тот же самый var, вы должны перечислить его снова.

$statement->bind_param('sss', $passwordHashSalt, $random_sal, {$otherVarName})

EDIT: Теперь, когда вы на самом деле фиксируется ваш почтовый Убедитесь, что вы адресовать ваши имена Var:!

$ SQLStatement = $ утверждение

+0

Как вы относитесь к адресу my var names? – wanttobeprofessional

+0

просто предназначен для постоянного использования фактических имен переменных - в отношении опечатки. –

Смежные вопросы