ここでは、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 に精通しているとしたら、何を探しますか?