2013-11-09 6 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})

편집 : 이제 당신이 실제로 게시물 당신이 당신의 var에 이름 주소를 확인 고정 된 것을!!

$의 SQLStatement = $ 문

+0

내 var 이름의 주소를 어떻게 의미합니까? – wanttobeprofessional

+0

은 오타를 참조하여 실제 var 이름을 일관되게 사용하기위한 것입니다. –