【PHP8.x】fetchArrayメソッドの使い方

fetchArrayメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

fetchArrayメソッドは、SQLite3のクエリ結果セットから1行分のデータを配列として取得するために実行するメソッドです。このメソッドは、SQLite3::query()などを実行した結果として得られるSQLite3Resultオブジェクトに対して使用します。メソッドを呼び出すたびに、結果セット内のポインタが次の行へと進み、その行のデータが配列として返されます。すべての行を取得し終えた後に再度呼び出すと、falseを返します。オプションの引数$modeを渡すことで、返される配列の形式を指定することが可能です。$modeには主に3つの定数を指定できます。SQLITE3_ASSOCはカラム名をキーとする連想配列、SQLITE3_NUMは0から始まる数値をインデックスとする添字配列を返します。引数を省略した場合やSQLITE3_BOTHを指定した場合は、連想配列と添字配列の両方の形式を含む配列が返されます。この動作により、whileループなどを用いてクエリ結果を1行ずつ効率的に処理する際によく利用されます。

構文(syntax)

1<?php
2
3// インメモリデータベースに接続します。
4$db = new SQLite3(':memory:');
5
6// テーブルを作成し、サンプルデータを挿入します。
7$db->exec('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)');
8$db->exec('INSERT INTO users (name) VALUES ("Alice")');
9$db->exec('INSERT INTO users (name) VALUES ("Bob")');
10
11// クエリを実行して、結果セット(SQLite3Resultオブジェクト)を取得します。
12$result = $db->query('SELECT id, name FROM users');
13
14// fetchArray() を使用して、結果セットから1行ずつデータを配列として取得します。
15// 引数に SQLITE3_ASSOC を指定すると、カラム名をキーとする連想配列で返されます。
16// 取得する行がなくなると false を返し、whileループが終了します。
17while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
18    echo "ID: {$row['id']}, Name: {$row['name']}" . PHP_EOL;
19}
20
21// データベース接続を閉じます。
22$db->close();
23
24?>

引数(parameters)

int $mode = SQLITE3_BOTH

  • int $mode = SQLITE3_BOTH: 取得する結果の形式を指定します。SQLITE3_NUM (数値インデックス), SQLITE3_ASSOC (連想配列), または SQLITE3_BOTH (数値インデックスと連想配列の両方) を指定できます。デフォルトは SQLITE3_BOTH です。

戻り値(return)

array|false

SQLite3Result::fetchArray() メソッドは、クエリ結果セットの次の行を連想配列または数値添え字配列として返します。結果セットの終わりに達した場合は false を返します。

【PHP8.x】fetchArrayメソッドの使い方 | いっしー@Webエンジニア