PHP准备声明

时间:2013-11-09 20:58:02

标签: php prepared-statement

我不明白为什么这段代码不起作用。我收到这个错误:

  

警告:mysqli_stmt :: bind_param():变量数与预准备语句中的参数数量不匹配。

我见过几个例子。根据例子它应该有用。

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

1 个答案:

答案 0 :(得分:-1)

你的绑定参数缺少最后一个字符串参数。即使它是相同的var,你也必须再次列出它。

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

编辑: 现在你确实修了你的帖子 确保解决var名称:

$ sqlStatement!= $ statement