PHPを使ってPOSTデータをMySQLデータベースに保存する方法のメモ。
環境情報
- PHPバージョン – PHP 7.4.33
- サーバー – エックスサーバー(x10)
必要なファイル
- config.php – データベース接続情報を含むファイル
- 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();
?>スクリプトの説明
- ヘッダー設定: header('Content-type: application/json; charset=utf-8');は、出力をJSON形式に設定します。
- config.phpの読み込み: require 'config.php';でデータベース接続情報を読み込みます。
- タイムゾーン設定: date_default_timezone_set('Asia/Tokyo');でタイムゾーンを設定します。
- POSTデータの取得: filter_input(INPUT_POST, 'data1');で送信されたデータを取得します。
- データベース接続: new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);でデータベースに接続します。
- SQLクエリの準備と実行: prepareとbind_paramメソッドを使用してSQLクエリを準備し、実行します。
- 接続の閉鎖: closeメソッドでデータベース接続を閉じます。
使用方法
- 上記のスクリプトをそれぞれのファイルに保存します。
- ウェブフォームからdata1とdata2のデータをPOSTリクエストで送信します。
- save_data.phpをサーバー上で実行すると、データがデータベースに保存されます。

 
  
  
  
  

コメント