ユーザー名、パスワード、メールアドレスを入力する
架空の会員登録フォームを例に、
プリペアードステートメントの実行を実演します。
このサンプルコードでは、$_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文について説明します。



