2013-11-09 332 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

Thanky你!我不知道我怎麼看不到這種愚蠢。 – wanttobeprofessional

回答

-1

您的綁定參數缺少最後一個字符串參數。即使它是相同的變種,你也必須再次列出它。

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

編輯: 現在,你實際上固定您的文章 確保您解決變種名稱:!

$的SQLStatement = $聲明

+0

你是如何解決我的var名稱? – wanttobeprofessional

+0

只是爲了始終如一地使用實際的var名稱 - 參考錯字。 –