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とは何ですか?
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を扱う」レッスンは無料ですか?
はい。「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フィードバックを取得できます。ローカル設定は不要です。