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
をサーバー上で実行すると、データがデータベースに保存されます。
コメント