0

ここでは、Tutis ログイン スクリプトを使用しています。

このregister()関数では、新しいユーザーが作成されたときにデータベースに保存されるデータにもう 1 つの値を追加できるようにしたいだけです。スクリプトはusers、特定の数の列を持つデータベース テーブルを使用しtypeます。データベース内のテーブルに追加したもう 1 つの列 が必要です。

問題は、このコードが機能しない理由がわからないことです。

$database->query('INSERT INTO users(username, password, email, date, type) 
VALUES (:username, :password, :email, :date, :type)', 
array(':username' => $username, 
'password' => $password, 
'email' => $email, 
'date' => $date, 
'type' => 'staff' // this is the line I added, just ensuring the user is 'staff'
));

元のコードは行を除いてまったく同じでした'type'=> 'staff'。これを実行すると、チェック時に残りの値がデータベースに正しく保存されますが、type列は空のままです。ユーザーを登録しようとすると、次のエラーが表示されます。

Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in... line database.class.php 71.

警告に続いて確認しましたが、ファイルの 71 行目でdatabase.class.php、これだけです。

/* Execute Query & check for any errors */
if(!$this->statement->execute()){ //this is line 71
    $result = array(
        1 => 'false',
        2 => '<b>[DATABASE] Error - Query:</b> There was an error in sql syntax',
    );
    return $result;

私は PDO の初心者で、チュートリアルもチェックできます (そして持っています) が、これを簡単に理解することはできませんでした。何が間違っている可能性がありますか、誰かアイデアはありますか? PDO に精通しているとしたら、何を探しますか?

4

0 に答える 0