Posted at

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

以下の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>