【PHP8.x】PDO::FETCH_INTO定数の使い方
FETCH_INTO定数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
FETCH_INTO定数は、PHPのPDO(PHP Data Objects)拡張機能において、データベースから取得したデータを既存のオブジェクトにマッピング(割り当てる)する際の動作モードを表す定数です。PDOは、さまざまなデータベースに統一されたインターフェースでアクセスするためのライブラリであり、この定数はそのデータ取得方法の一つを定義します。
具体的には、データベースの検索結果セットから次の行を読み込む際に、新しいオブジェクトを生成するのではなく、あらかじめ指定された既存のオブジェクトのプロパティにその行のカラム値を設定するようPDOに指示します。この定数は、通常、PDOStatement::fetch()やPDOStatement::fetchAll()などのメソッドにfetch_style引数として渡され、さらにマッピング先の既存オブジェクトをfetch_argumentとして指定することで機能します。
例えば、$existingObject = new MyClass();として作成済みのオブジェクトがある場合、$stmt->fetch(PDO::FETCH_INTO, $existingObject);のように使用することで、データベースの行データが$existingObjectの対応するプロパティに格納されます。この機能は、オブジェクトの再利用を促進し、繰り返し同じ型のオブジェクトにデータを読み込む場合に、オブジェクトの生成コストを削減し、メモリ効率を高めるのに役立ちます。また、すでに状態を持つオブジェクトにデータベースのデータを追加したい場合など、柔軟なデータ処理を実現します。
構文(syntax)
1<?php 2 3class UserData 4{ 5 public $id; 6 public $name; 7} 8 9try { 10 $pdo = new PDO('sqlite::memory:'); 11 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 12 13 $pdo->exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)"); 14 $pdo->exec("INSERT INTO users (id, name) VALUES (1, 'Alice')"); 15 16 $stmt = $pdo->prepare("SELECT id, name FROM users WHERE id = :id"); 17 $stmt->execute([':id' => 1]); 18 19 $user = new UserData(); 20 $stmt->fetch(PDO::FETCH_INTO, $user); 21 22} catch (PDOException $e) { 23 // エラー処理 24 // 例: echo "Error: " . $e->getMessage(); 25} 26 27?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
戻り値なし
戻り値はありません