Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】PDO::FETCH_BOTH定数の使い方

FETCH_BOTH定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

FETCH_BOTH定数は、PHPのPDO(PHP Data Objects)拡張機能において、データベースから結果セットを取得する際のデータの形式を指定するために使用される定数です。この定数は、PDOStatementオブジェクトのfetch()fetchAll()といったメソッドの引数として利用されます。

具体的には、データベースから取得された各行のデータを、数値添字とカラム名(文字列キー)の両方をキーとする配列として返却するように指示します。例えば、SELECT id, name FROM usersというSQLクエリの結果を取得する際、PDO::FETCH_BOTHを指定すると、結果の配列$rowには$row[0]$row['id']、そして$row[1]$row['name']のように、同じデータに数値添字とカラム名の2つの異なる方法でアクセスできるようになります。

この特性は、取得したデータに数値添字でアクセスする必要がある場合と、カラム名でアクセスする方がコードの可読性が高まる場合の両方に対応したいときに特に便利です。データベースの設計変更があった際にも、カラム名でのアクセスであれば影響を受けにくいという側面や、動的にカラム名を決定してアクセスするといった柔軟な処理にも対応しやすくなります。PDO::FETCH_NUM(数値添字のみ)やPDO::FETCH_ASSOC(カラム名のみ)といった他のフェッチモードと比較して、両方のアクセス方法を提供することで、より多様なプログラミングシナリオに適応できる点が特徴です。

構文(syntax)

1<?php
2
3$dsn = 'mysql:host=localhost;dbname=testdb';
4$user = 'your_username';
5$password = 'your_password';
6
7try {
8    $pdo = new PDO($dsn, $user, $password);
9    $stmt = $pdo->query('SELECT id, name FROM users LIMIT 1');
10    $row = $stmt->fetch(PDO::FETCH_BOTH);
11    print_r($row);
12} catch (PDOException $e) {
13    echo 'エラー: ' . $e->getMessage();
14}
15
16?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

PDO::FETCH_BOTHは、PDOStatement::fetch()メソッドの引数として使用される定数です。この定数を指定すると、列名をキーとする連想配列と、数値インデックスをキーとする配列の両方で、取得した行のデータを配列として返します。

関連コンテンツ