-1

私はこのことについて数時間コーディングしているので、ここでは非常に単純なものが欠けていると思いますが、それを見つけることができないようです。

これらの2つのエラーが発生しています

警告:PDOStatement :: execute()[pdostatement.execute]:SQLSTATE [HY093]:無効なパラメーター番号:バインドされた変数の数が77行目のトークンの数と一致しません

警告:PDOStatement :: execute()[pdostatement.execute]:SQLSTATE [HY093]:無効なパラメーター番号:バインドされた変数の数が79行目のトークンの数と一致しません

public function resetPassword($password, $email){
    $rst    =   $this->db->prepare("insert into users (password) values (?) where email=? ");
    $rst->bindParam('?', $password);
    $rst->bindParam('?', $email);
    $rst->execute();
    
    if($rst->execute()){
        return "Password changed!"; 
    }
    else echo "Could not change password.";
}

私は何かを忘れていますか?

4

1 に答える 1

1

疑問符をプレースホルダーとして使用する場合は、次のように配列をexecuteメソッドに送信します。$rst->execute(array('placeholder1value', 'placeohlder2value'));

ただし、名前付きプレースホルダーを使用する場合は、次のように、bindParam/bindValueを使用します。

$stmt = $pdo->prepare('INSERT INTO table (key1, key2) VALUES (:key1, :key2)');
$stmt->bindValue(':key1', 'somevalue', PDO::PARAM_STR);
$stmt->bindValue(':key1', 3532, PDO::PARAM_INT);
$stmt->execute();

bindParamとの違いについてお読みくださいbindValue

そして別の注意点として、SQLクエリは意味がありませんUPDATE

于 2013-01-27T20:56:50.033 に答える