27
20

More than 5 years have passed since last update.

PHPで入力フォームのデータをSELECT文のINSERTを使って、MySQLに書き込む

Posted at

以下の2つソースコードを作ります。
①入力フォーム
②入力フォームで入力されたデータをPOSTで受け取って、DBに接続して書き込む

↓入力フォーム画面
キャプチャ.PNG

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="description" content="このページの説明">
  <title>このページのタイトル</title>
  <link rel="stylesheet" href="/main.css">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
</head>
<body>
<div id="post_page">
  <form method="post" action="process_post.php">
    <div>name <input type="text" name="name" size="30"></div>
    <div>category <input type="text" name="category" size="30"></div>
    <div>description <textarea name="description" cols="30" rows="10"></textarea></div>
    <div><input type="submit" name="submit" value="投稿" class="button"></div>
  </form>
</div>
</body>
</html>

↓登録・登録結果表示画面

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="description" content="このページの説明文">
  <title>このページのタイトル</title>
  <link rel="stylesheet" href="/main.css">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
</head>
<body>

<?php
  try {
    //DB名、ユーザー名、パスワード
    $dsn = 'mysql:dbname=データベース名;host=サーバー名';
    $user = 'ユーザー名';
    $password = 'パスワード';

    $PDO = new PDO($dsn, $user, $password); //MySQLのデータベースに接続
    $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //PDOのエラーレポートを表示

    //input_post.phpの値を取得
    $name = $_POST['name'];
    $category = $_POST['category'];
    $description = $_POST['description'];


    $sql = "INSERT INTO contents (name, category, description) VALUES (:name, :category, :description)"; // INSERT文を変数に格納。:nameや:categoryはプレースホルダという、値を入れるための単なる空箱
    $stmt = $dbh->prepare($sql); //挿入する値は空のまま、SQL実行の準備をする
    $params = array(':name' => $name, ':category' => $category, ':description' => $description); // 挿入する値を配列に格納する
    $stmt->execute($params); //挿入する値が入った変数をexecuteにセットしてSQLを実行

    echo "<p>name: ".$name."</p>";
    echo "<p>category: ".$category."</p>";
    echo "<p>description: ".$description."</p>";
    echo '<p>で登録しました。</p>'; // 登録完了のメッセージ
  } catch (PDOException $e) {
  exit('データベースに接続できませんでした。' . $e->getMessage());
  }

?>
</body>
</html>
27
20
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
20