UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#076 PHP PDO FETCHの種類に関して

記入日:2023-03-25 編集日:2023-03-25

PHP PDO FETCHの種類に関して

この記事を読むと(約5分)
PHP PDO FETCHの種類に関して基本的な考え方がイメージできます。

PDO FETCHの種類に関して

PDO (PHP Data Objects) は、PHPでデータベースにアクセスするためのデータベースアクセス層です。PDOは、様々なデータベースに接続することができますが、標準的なデータベースにはMySQLが含まれます。

PDOには、異なるフェッチモードがあります。フェッチモードは、PDOが取得したデータをPHPの変数にどのように格納するかを決定します。以下は、PDOのフェッチモードの一部です。

  1. PDO::FETCH_ASSOC: 結果セットを連想配列として取得します。配列のキーは、結果セットの列名に対応します。
  2. PDO::FETCH_NUM: 結果セットを通常の配列として取得します。配列のキーは、0から始まる数字の連番に対応します。
  3. PDO::FETCH_BOTH: 結果セットを連想配列と通常の配列の両方として取得します。配列のキーは、結果セットの列名と0から始まる数字の連番の両方に対応します。
  4. PDO::FETCH_OBJ: 結果セットをオブジェクトとして取得します。オブジェクトのプロパティは、結果セットの列名に対応します。
  5. PDO::FETCH_CLASS: 結果セットを指定したクラスのオブジェクトとして取得します。指定したクラスのプロパティは、結果セットの列名に対応します。

これらのフェッチモードの中でも、特によく使用されるのはPDO::FETCH_ASSOCです。これは、結果セットを連想配列として取得するため、データベースの列名がキーとして使用されるためです。ただし、アプリケーションに応じて、他のフェッチモードを使用することもあります。

 

「fetch()」「fetchAll()」の違いは?

PDOでは、クエリの実行結果から1行ずつ取得する「fetch()」メソッドと、全ての行を一度に取得する「fetchAll()」メソッドの2つのメソッドがあります。

「fetch()」メソッドは、クエリの実行結果から1行ずつ取得するために使用されます。このメソッドは、クエリからの次の行を取得し、連想配列、数値配列、オブジェクトの形式で返します。連想配列や数値配列を取得するためには、PDO::FETCH_ASSOCやPDO::FETCH_NUMを引数に指定する必要があります。また、結果がない場合はFALSEを返します。

例えば、以下のようなコードを使用して、クエリの結果を1行ずつ取得できます。

$query = $pdo->query('SELECT * FROM users');
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
    echo $row['name'] . ' ' . $row['age'];
}

一方、「fetchAll()」メソッドは、クエリの実行結果から全ての行を一度に取得するために使用されます。このメソッドは、クエリから全ての行を取得し、配列の形式で返します。返された配列の要素は、各行の連想配列、数値配列、またはオブジェクトに対応します。また、結果がない場合は空の配列を返します。

例えば、以下のようなコードを使用して、クエリの結果を全て取得できます。

$rows = $pdo->query('SELECT * FROM users')->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
    echo $row['name'] . ' ' . $row['age'];
}

したがって、「fetch()」メソッドは、クエリの結果を1行ずつ取得するために使用され、多くの場合、ループ構造と一緒に使用されます。一方、「fetchAll()」メソッドは、クエリの結果を全て取得するために使用され、取得したデータを配列として扱う場合に適しています。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。