ゲストブック - データベースに値を挿入
フォームに入力されたメッセージをデータベースに追加する
- INSERT文を組み立てて実行する
- 追加画面→追加確認画面→追加完了画面
- 追加完了画面でINSERT文を実行するには、入力フォームに入力されたメッセージを$_POSTや$_SESSIOを経由して受け渡し、その値をもとにINSERT文を組み立てます
データベースに接続
- 情報を指定してユーザー認証(使用許可を得る)
- 認証変数を使ってデータベースを操作できるようになる
$conn = new PDO('mysql:dbname=guestbook; host=localhost', root, root);
- 「$conn」は、任意のオブジェクト名で、使用許可をまとめた「目印」の役割をします
- PDOを値を変数化して代入する例もあります
- 「$conn」を通してPDOの命令を呼び出すときには、以下のように記述します
$conn->prepare($sql)
- prepareメソッドを実行するという意味
データベースに値を挿入
《submit.php》
<?php // セッションの開始 session_start(); if (empty($_SESSION)) {exit;} // 接続設定 $user = 'root'; $pass = ''; // データベースに接続 $dsn = 'mysql:host=localhost;dbname=guestbook;charset=utf8'; $conn = new PDO($dsn, $user, $pass); // 入力内容の取得($_SESSIONから) $m_name = htmlspecialchars($_SESSION['m_name'], ENT_QUOTES, 'UTF-8'); $m_mail = htmlspecialchars($_SESSION['m_mail'], ENT_QUOTES, 'UTF-8'); $m_message = htmlspecialchars($_SESSION['m_message'], ENT_QUOTES, 'UTF-8'); // データの追加 $sql = 'INSERT INTO message(m_name, m_mail, m_message, m_dt) VALUES(:m_name, :m_mail, :m_message, NOW())'; $stmt = $conn->prepare($sql); $stmt->bindParam(':m_name', $m_name); $stmt->bindParam(':m_mail', $m_mail); $stmt->bindParam(':m_message', $m_message); $stmt->execute(); // エラーチェック $error = $stmt->errorInfo(); if ($error[0] != '00000') { $message = 'データの追加に失敗しました。' . $error[2]; } else { $message = 'データを追加しました。データ番号:' . $conn->lastInsertId(); } // セッションデータの破棄 $_SESSION = array(); session_destroy(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ゲストブック</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <p>追加完了画面</p> <table> <tr> <th>名前</th> <td><?php echo $m_name; ?></td> </tr> <tr> <th>メールアドレス</th> <td><?php echo $m_mail; ?></td> </tr> <tr> <th>メッセージ</th> <td><?php echo nl2br($m_message); ?></td> </tr> </table> <p><a href="index.php">トップページへ</a></p> </body> </html>