ユーザー名、パスワード、メールアドレスを入力する
架空の会員登録フォームを例に、
プリペアードステートメントの実行を実演します。
このサンプルコードでは、$_POST[“キー”]という形式で、
リクエストのデータを受け取っていますが、
実際には適切な入力チェックを行ってください。
サンプルウェブ画面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <form action= "./prepared_statement.php" method= "post" > <div id= "user_name_div" > <label for = "user_name" >ユーザー名</label> <input type= "text" name= "user_name" id= "user_name" > </div> <div id= "password_div" > <label for = "password" >パスワード</label> <input type= "password" name= "password" > </div> <div id= "email_div" > <label for = "email" >メールアドレス</label> <input type= "email" name= "email" > </div> <button type= "submit" >提出</button> </form> |
処理コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?php // フォームから送られてきたデータを抽出 $user_name = $_POST [ "user_name" ]; $password = $_POST [ "password" ]; $email = $_POST [ "email" ]; // SQL文 $sql = <<<SQL INSERT INTO `USERS` (`user_name`, `password`, `email`) VALUES (:user_name, :password, :email); SQL; // try-catchで囲む try { // DB接続 $db = new PDO( 'mysql:host=localhost;dbname=test' , "root" , "" ); // SQLにフォームから得た値を代入 $preparedStatement = $db ->prepare( $sql ); $preparedStatement ->bindValue( ":user_name" , $user_name , PDO::PARAM_STR); $preparedStatement ->bindValue( ":password" , $password , PDO::PARAM_STR); $preparedStatement ->bindValue( ":email" , $email , PDO::PARAM_STR); // クエリ実行 $result = $preparedStatement ->execute(); echo $result ; // DB接続を閉じる $db = null; } catch (Exception $e ){ // エラー表示 echo $e ; throw new Error( "データ登録に失敗しました" ); } ?> |
ユーザーの操作とその結果
まとめ
次回はプリペアードステートメントのSELECT文について説明します。