5-3. PHPでデータベース操作の基礎

更新日:2025年12月7日

5-3. PHPでデータベース操作の基礎について解説します。

データベースは、Webアプリケーションの情報を永続的に保存する場所です。 PHPのPDO(PHP Data Objects)を使って、安全にデータベースを操作する方法を学習します。

PDOとは

  • データベース抽象化レイヤー:様々なデータベースに対応
  • プリペアドステートメント:SQLインジェクション対策
  • エラーハンドリング:例外処理に対応
  • オブジェクト指向:モダンなPHP開発に最適

データベース接続

<?php
$host = 'localhost';
$dbname = 'myapp';

try {
    $pdo = new PDO(
        "mysql:host=$host;dbname=$dbname;charset=utf8mb4",
        'root', 'password',
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
    );
} catch (PDOException $e) {
    echo "接続失敗: " . $e->getMessage();
}
?>

基本的なCRUD操作

CREATE(挿入)

$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute([':name' => '山田太郎', ':email' => 'yamada@example.com']);

READ(読み取り)

$sql = "SELECT * FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute([':id' => 1]);
$user = $stmt->fetch();

UPDATE(更新)

$sql = "UPDATE users SET name = :name WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute([':name' => '山田花子', ':id' => 1]);

DELETE(削除)

$sql = "DELETE FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute([':id' => 1]);

トランザクション処理

try {
    $pdo->beginTransaction();
    // 複数の処理
    $pdo->commit();
} catch (Exception $e) {
    $pdo->rollBack();
}

JavaScriptとの連携例

// PHP側(api/users.php)
header('Content-Type: application/json');
$stmt = $pdo->query("SELECT * FROM users");
echo json_encode($stmt->fetchAll());

// JavaScript側
fetch('api/users.php')
    .then(r => r.json())
    .then(users => displayUsers(users));

セキュリティのポイント

脅威対策
SQLインジェクションプリペアドステートメント
不正な入力バリデーション
データ漏洩最小権限の原則

まとめ

PDOを使用することで、安全で効率的なデータベース操作が可能になります。 必ずプリペアドステートメントを使用し、適切なエラーハンドリングを実装しましょう。

免責事項
本コンテンツは2025年12月時点の情報に基づいて作成されている。最新の情報については公式ドキュメントを参照されたい。