2021.08.31
【PHP応用】 PDO⑥ プリペアードステートメントの実行 INSERT文サンプル
ユーザー名、パスワード、メールアドレスを入力する
架空の会員登録フォームを例に、
プリペアードステートメントの実行を実演します。
このサンプルコードでは、$_POST[“キー”]という形式で、
リクエストのデータを受け取っていますが、
実際には適切な入力チェックを行ってください。
サンプルウェブ画面
<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>
処理コード
<?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文について説明します。