PHP | POSTデータをMySQLに保存する方法

PHPを使ってPOSTデータをMySQLデータベースに保存する方法のメモ。

環境情報

  • PHPバージョン – PHP 7.4.33
  • サーバー – エックスサーバー(x10)

必要なファイル

  1. config.php – データベース接続情報を含むファイル
  2. save_data.php – POSTデータをデータベースに保存するスクリプト

config.phpの設定

まず、config.phpファイルを作成し、データベース接続情報を設定します。このファイルはデータベースへの接続情報を安全に管理するために必要です。

<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'your_db_user');
define('DB_PASSWORD', 'your_db_password');
define('DB_NAME', 'your_db_name');
?>

save_data.phpの作成

次に、save_data.phpファイルを作成し、以下のスクリプトを追加します。このスクリプトはPOSTリクエストを受け取り、データベースに保存します。

<?php
header('Content-type: application/json; charset=utf-8');

// config.phpファイルを読み込む
require 'config.php';

// タイムゾーン設定
date_default_timezone_set('Asia/Tokyo');

// 送信されたデータを取得
$data1 = filter_input(INPUT_POST, 'data1');
$data2 = filter_input(INPUT_POST, 'data2');
$created = date('Y-m-d H:i:s');

// データベース接続を確立
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

// 接続が成功したか確認
if ($conn->connect_error) {
    die(json_encode(["status" => "error", "message" => "Connection failed: " . $conn->connect_error]));
}

// SQLクエリを準備
$stmt = $conn->prepare("INSERT INTO results (data1, data2, created) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $data1, $data2, $created);

// クエリを実行
if ($stmt->execute()) {
    $param = $created.'に'.$data1.'と'.$data2.'を追加';
    echo json_encode(["status" => "success", "message" => $param]);
} else {
    echo json_encode(["status" => "error", "message" => "Failed to save data: " . $stmt->error]);
}

// 接続を閉じる
$stmt->close();
$conn->close();
?>

スクリプトの説明

  1. ヘッダー設定: header('Content-type: application/json; charset=utf-8'); は、出力をJSON形式に設定します。
  2. config.phpの読み込み: require 'config.php'; でデータベース接続情報を読み込みます。
  3. タイムゾーン設定: date_default_timezone_set('Asia/Tokyo'); でタイムゾーンを設定します。
  4. POSTデータの取得: filter_input(INPUT_POST, 'data1'); で送信されたデータを取得します。
  5. データベース接続: new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); でデータベースに接続します。
  6. SQLクエリの準備と実行: preparebind_paramメソッドを使用してSQLクエリを準備し、実行します。
  7. 接続の閉鎖: closeメソッドでデータベース接続を閉じます。

使用方法

  1. 上記のスクリプトをそれぞれのファイルに保存します。
  2. ウェブフォームからdata1data2のデータをPOSTリクエストで送信します。
  3. save_data.phpをサーバー上で実行すると、データがデータベースに保存されます。

コメント

タイトルとURLをコピーしました