MariaDBへデータ挿入:PHPとMySQL/MariaDBでデータベース操作をマスター
PHPからMariaDBへデータ挿入:詳細ガイド
前提知識
このチュートリアルを理解するには、以下の基本的な知識が必要です。
- PHPの基本構文
- MariaDBデータベースの基礎知識
- SQLの基本的なクエリ(INSERT文)
用意するもの
- PHPがインストールされた環境
- データベースへのアクセス権限を持つユーザーアカウント
手順
- データベース接続
最初に、PHPスクリプトからMariaDBデータベースへの接続を確立する必要があります。
<?php
$dbhost = "localhost"; // データベースホスト
$dbname = "your_database_name"; // データベース名
$dbuser = "your_username"; // データベースユーザー名
$dbpass = "your_password"; // データベースパスワード
$conn = new mysqli($dbhost, $dbname, $dbuser, $dbpass);
// 接続チェック
if ($conn->connect_error) {
die("接続失敗: " . $conn->connect_error);
}
上記コードでは、mysqli
拡張機能を使ってデータベースに接続しています。接続情報は以下の変数に格納されています。
$dbhost
: データベースホスト名$dbname
: データベース名$dbuser
: データベースユーザー名$dbpass
: データベースパスワード
これらの変数を、ご自身のデータベース環境に合わせて変更する必要があります。
- データ挿入
データベース接続が確立できたら、INSERT
ステートメントを使ってデータ挿入を実行します。
$sql = "INSERT INTO your_table_name (column1, column2, ...) VALUES (value1, value2, ...)";
if ($conn->query($sql) === TRUE) {
echo "データ挿入成功";
} else {
echo "データ挿入失敗: " . $conn->error;
}
上記コードでは、INSERT
ステートメントを使って your_table_name
テーブルにデータを挿入しています。
your_table_name
: 挿入先のテーブル名column1, column2, ...
: 挿入する列名value1, value2, ...
: 挿入するデータ値
実際のコードでは、テーブル名、列名、データ値を自身のデータに合わせて変更する必要があります。
すべての処理が終わったら、データベース接続を切断します。
$conn->close();
例:ユーザー情報挿入
上記の例を基に、ユーザー情報(名前、メールアドレス)を users
テーブルに挿入するスクリプトを作成してみましょう。
<?php
$dbhost = "localhost";
$dbname = "your_database_name";
$dbuser = "your_username";
$dbpass = "your_password";
$conn = new mysqli($dbhost, $dbname, $dbuser, $dbpass);
if ($conn->connect_error) {
die("接続失敗: " . $conn->connect_error);
}
$name = "山田 太郎";
$email = "[email protected]";
$sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
if ($conn->query($sql) === TRUE) {
echo "ユーザー情報挿入成功";
} else {
echo "ユーザー情報挿入失敗: " . $conn->error;
}
$conn->close();
このスクリプトを実行すると、users
テーブルに 山田 太郎
さんのデータが挿入されます。
注意事項
- データ挿入前に、テーブルと列の存在を確認してください。
- 挿入するデータ型に合致する値を指定してください。
- ユーザー入力データなどを挿入する場合は、SQLインジェクション対策を必ず行ってください。
<?php
$dbhost = "localhost";
$dbname = "your_database_name";
$dbuser = "your_username";
$dbpass = "your_password";
$conn = new mysqli($dbhost, $dbname, $dbuser, $dbpass);
if ($conn->connect_error) {
die("接続失敗: " . $conn->connect_error);
}
$name = "田中 花子";
$email = "[email protected]";
$age = 30;
$sql = "INSERT INTO users (name, email, age) VALUES ('$name', '$email', $age)";
if ($conn->query($sql) === TRUE) {
echo "ユーザー情報挿入成功";
} else {
echo "ユーザー情報挿入失敗: " . $conn->error;
}
$conn->close();
説明
- データベース接続: 上記コードでは、
mysqli
拡張機能を使ってデータベースに接続しています。 - データ準備: 挿入するユーザー情報(名前、メールアドレス、年齢)を変数に格納しています。
- データ挿入:
INSERT
ステートメントを使って、users
テーブルにデータを挿入しています。
ポイント
- ユーザー情報(名前、メールアドレス、年齢)は、ご自身のデータに合わせて変更してください。
- 実際のコードでは、データベース情報(ホスト名、データベース名、ユーザー名、パスワード)を適切な値に置き換えてください。
- このコードは、あくまで基本的なデータ挿入の例です。より複雑なデータ挿入や、エラー処理などを実装する場合は、更に調査・学習を進める必要があります。
PDOは、PHP Data Objectsの略称で、データベースとのやり取りを簡潔に行うための拡張機能です。 mysqliよりも可読性とメンテナンス性に優れているという特徴があります。
<?php
$dbhost = "localhost";
$dbname = "your_database_name";
$dbuser = "your_username";
$dbpass = "your_password";
try {
$pdo = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$name = "佐藤 次郎";
$email = "[email protected]";
$age = 25;
$sql = "INSERT INTO users (name, email, age) VALUES (:name, :email, :age)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':age', $age);
if ($stmt->execute()) {
echo "ユーザー情報挿入成功";
} else {
echo "ユーザー情報挿入失敗: " . $stmt->errorInfo()[2];
}
} catch (PDOException $e) {
echo "データベース接続エラー: " . $e->getMessage();
}
$pdo = null;
mysqli_prepare() と mysqli_bind_param() を使用する
mysqli_prepare()
と mysqli_bind_param()
関数は、SQLインジェクション対策に効果的なパラメーター化クエリを実行するために使用されます。
<?php
$dbhost = "localhost";
$dbname = "your_database_name";
$dbuser = "your_username";
$dbpass = "your_password";
$conn = new mysqli($dbhost, $dbname, $dbuser, $dbpass);
if ($conn->connect_error) {
die("接続失敗: " . $conn->connect_error);
}
$name = "高橋 麗子";
$email = "[email protected]";
$age = 40;
$sql = "INSERT INTO users (name, email, age) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("sss", $name, $email, $age);
if ($stmt->execute()) {
echo "ユーザー情報挿入成功";
} else {
echo "ユーザー情報挿入失敗: " . $stmt->error;
}
$stmt->close();
$conn->close();
INSERT ... SELECT ステートメントを使用する
既存のテーブルからデータを抽出し、新しいテーブルに挿入する際に便利な方法です。
<?php
$dbhost = "localhost";
$dbname = "your_database_name";
$dbuser = "your_username";
$dbpass = "your_password";
$conn = new mysqli($dbhost, $dbname, $dbuser, $dbpass);
if ($conn->connect_error) {
die("接続失敗: " . $conn->connect_error);
}
$sql = "INSERT INTO new_users (name, email, age)
SELECT name, email, age FROM users
WHERE age >= 30";
if ($conn->query($sql) === TRUE) {
echo "30歳以上のユーザー情報が new_users テーブルに挿入されました";
} else {
echo "データ挿入失敗: " . $conn->error;
}
$conn->close();
上記の方法を使用する場合は、それぞれの構文と注意点を確認する必要があります。また、状況に応じて適切な方法を選択してください。
php mysql mariadb