0Pricing
PHP Academy · レッスン

PDOを扱う

PHP Data Objects(PDO)を使ってデータベースを操作します

「PDOを扱う」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン6/6です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全6レッスンが含まれています。

PDOの概要

PDOを使ったデータベース操作

次のレッスンへようこそ!このレッスンでは、データベースとのやり取りにPDO(PHP Data Objects)を使用する方法を学びます。PDOは、データベースへの接続や操作を柔軟かつ安全に行うための方法です。詳しく見ていきましょう!

PDOを扱う — イラスト1

PDOとは何ですか?

PDOとは何ですか?

PDO(PHP Data Objects)は、さまざまなデータベースシステムを操作するための統一されたインターフェースを提供するデータベースアクセス層です。MySQL、PostgreSQL、SQLiteなど、さまざまなデータベースをサポートしています。

主な機能:

  • データベース非依存(複数のデータベースの種類で動作します)。
  • プリペアドステートメントを標準でサポートしています。
  • 高度なエラー処理のオプションを利用できます。

ヒント: PDOは、安全でスケーラブルなWebアプリケーションの構築に適しています。

PDOでデータベースに接続する

PDOでデータベースに接続する

PDOを使用してデータベースに接続するには、次のものが必要です。

  • データベースの種類、ホスト、名前を含むデータソース名(DSN)。
  • 有効なユーザー名とパスワード。

例:

ヒント: 機密性の高い認証情報には、環境変数または設定ファイルを使用してください。

<?php
  $dsn = "mysql:host=localhost;dbname=testdb";
  $username = "root";
  $password = "";

  try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully!";
  } catch (PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
  }
?>

クエリの実行

クエリの実行

PDOには、クエリを実行するための主なメソッドが2つあります。

  • exec(): 結果を返さないステートメントに使用します(例: INSERT、UPDATE)。
  • query(): 結果を返すステートメントに使用します(例: SELECT)。

例:

<?php
  // Insert a record
  $pdo->exec("INSERT INTO users (name, email) VALUES ('Alice', 'alice@mail.com')");

  // Retrieve records
  $stmt = $pdo->query("SELECT * FROM users");
  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo "Name: " . $row["name"] . ", Email: " . $row["email"] . "<br>";
  }
?>

プリペアドステートメントの使用

プリペアドステートメントの使用

プリペアドステートメントは、安全で効率的なデータベース操作に不可欠です。例:

ヒント: SQLインジェクションを防ぐには、プレースホルダー(:email)を使用してください。

<?php
  $sql = "SELECT * FROM users WHERE email = :email";
  $stmt = $pdo->prepare($sql);
  $stmt->execute(["email" => "alice@mail.com"]);
  $user = $stmt->fetch(PDO::FETCH_ASSOC);

  echo "Name: " . $user["name"];
?>

PDOでのエラー処理

PDOでのエラー処理

PDOは、次の3つのエラー処理モードをサポートしています。

  • ERRMODE_SILENT: エラーを手動で確認する必要があります。
  • ERRMODE_WARNING: エラーによってPHPの警告が発生します。
  • ERRMODE_EXCEPTION: エラーによって例外がスローされます(推奨)。

例:

<?php
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  try {
    $pdo->exec("INVALID SQL STATEMENT");
  } catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
  }
?>

データの取得

データの取得

PDOには、次のような複数の取得メソッドがあります。

  • fetch(): 1行を取得します。
  • fetchAll(): すべての行を取得します。
  • fetchColumn(): 1つの列の値を取得します。

例:

<?php
  $stmt = $pdo->query("SELECT name FROM users");
  while ($name = $stmt->fetchColumn()) {
    echo "User: " . $name . "<br>";
  }
?>

トランザクション管理

トランザクション管理

複数のクエリを1つの単位として実行するには、トランザクションを使用します。例:

ヒント: データの整合性を確保するには、トランザクションを使用してください。

<?php
  try {
    $pdo->beginTransaction();

    $pdo->exec("INSERT INTO users (name, email) VALUES ('Bob', 'bob@mail.com')");
    $pdo->exec("INSERT INTO users (name, email) VALUES ('Charlie', 'charlie@mail.com')");

    $pdo->commit();
    echo "Transaction successful!";
  } catch (PDOException $e) {
    $pdo->rollBack();
    echo "Transaction failed: " . $e->getMessage();
  }
?>

よくできました!

よくできました!

おめでとうございます!データベースへの接続、クエリの実行、トランザクションの管理など、PDOを使用して安全かつ効率的にデータベースを操作する方法を学びました。次のレッスンでは、PDOを使った高度なSQLクエリ技法について学びます。コーディングを続けましょう!

PDOを扱う — イラスト10

よくある質問

「PDOを扱う」レッスンは無料ですか?

はい。「PDOを扱う」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全6レッスンが含まれています。

「PDOを扱う」で何を学びますか?

PHP Data Objects(PDO)を使ってデータベースを操作します ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン6/6です。

「PDOを扱う」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. データベース入門
  2. MySQLデータベースに接続する
  3. テーブルを管理する
  4. CRUD操作を実行する
  5. プリペアドステートメント
  6. PDOを扱う
← PHP Academyに戻る