MySQLとの連携

PHPとMySQLの連携は、Webアプリケーション開発において非常に一般的です。PHPからMySQLデータベースにアクセスし、データの取得、挿入、更新、削除などの操作を行うことができます。以下では、PHPとMySQLの連携について、基本的な内容から実践的な使い方まで詳しく説明します。


1. 使用する拡張機能

PHPでMySQLと連携するためには、以下の2つの方法が一般的です:

  • MySQLi(MySQL Improved)拡張機能

  • PDO(PHP Data Objects)拡張機能


2. データベースへの接続(MySQLiの例)

php
$host = "localhost"; $user = "username"; $password = "password"; $database = "my_database"; // 接続を確立 $conn = new mysqli($host, $user, $password, $database); // 接続確認 if ($conn->connect_error) { die("接続失敗: " . $conn->connect_error); }

3. クエリの実行(SELECT文の例)

php
$sql = "SELECT id, name FROM users"; $result = $conn->query($sql); if ($result->num_rows > 0) { // データを1行ずつ取得 while($row = $result->fetch_assoc()) { echo "ID: " . $row["id"] . " 名前: " . $row["name"] . "<br>"; } } else { echo "結果が0件です"; }

4. データの挿入(INSERT文の例)

php
$name = "山田太郎"; $email = "taro@example.com"; $sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')"; if ($conn->query($sql) === TRUE) { echo "新しいレコードが作成されました"; } else { echo "エラー: " . $conn->error; }

※上記のように値を直接SQL文に埋め込むのはSQLインジェクションのリスクがあります。プリペアドステートメントを使用することが推奨されます。


5. プリペアドステートメント(安全な方法)

php
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)"); $stmt->bind_param("ss", $name, $email); $name = "佐藤花子"; $email = "hanako@example.com"; $stmt->execute(); $stmt->close();

6. データベース接続の終了

php
$conn->close();

7. PDOによる接続の例(オブジェクト指向的な方法)

php
try { $pdo = new PDO("mysql:host=localhost;dbname=my_database", "username", "password"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "接続成功"; } catch (PDOException $e) { echo "接続失敗: " . $e->getMessage(); }

補足:エラーハンドリングとセキュリティ

  • SQLインジェクション対策として、必ずプリペアドステートメントを使用してください。

  • 入力値の検証(バリデーション)も適切に行うことが重要です。

  • データベース接続情報は外部ファイル(例:config.php)に分離し、Gitなどで管理する際は除外することが推奨されます。

生成日:2025/05/03