# TiDB によるクエリ結果の取得
+ **`fetch([$fetch_style])`** を使用して、結果セットから行を列値の配列として取得します
+ `$fetch_style` には以下が含まれます
    + **`PDO::FETCH_NUM`**: 配列を返します。配列の要素にアクセスするには、数値の添字を使用します
    + **`PDO::FETCH_ASSOC`**: 列名でインデックス付けされた連想配列を返す
    + **`PDO::FETCH_BOTH`**: デフォルト。数値、添字、または列名でアクセスできる配列を返します
    + **`PDO::FETCH_OBJ`**: 列名に対応するメンバーを含むオブジェクトを返する
+ **`setFetchMode($fetch_style)`** を使用して、ステートメントハンドルからの以降のすべてのフェッチのフェッチスタイルを指定します
+ **`columnCount()`** を使用して列数を返する
+ **`fetchAll()`** を使用して行の配列を返す
--------------------------------------------------------
データベースハンドルの `query()` メソッドを使用して TiDB サーバーからデータを取得すると、結果セットは `PDOStatement` オブジェクトとして返されます。このオブジェクトを変数に格納すると、その変数が `statement handle` になり、結果セットの操作に使用されます。

結果セット内の個々の行にアクセスするには、`fetch()` メソッドを使用します。

PDO には、フェッチスタイルと呼ばれる、行をフェッチするための多くのオプションが用意されています。`fetch()`を呼び出すときにフェッチスタイルを指定しない場合、デフォルトは配列を返す`PDO::FETCH_BOTH`で、数字の添字または列名で要素にアクセスできます。

特定のステートメントハンドルからのすべてのフェッチに同じフェッチスタイルを使用するには、最初の `fetch()` を実行する前に `setFetchMode($fetch_style)` メソッドを呼び出します。データベース接続内のすべてのフェッチで同じフェッチスタイルを使用する場合は、データベースハンドルの `setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, $fetch_style)` メソッドを使用する。

ループ構造内の個々の行を取得する代わりに、`fetchAll()` を使用して行の配列を取得します。配列は、各行を列値の配列、または各列名に対応するプロパティを持つオブジェクト（指定したフェッチスタイルによって異なります）として表します。結果がない場合は空の配列を返し、失敗した場合は `false` を返します。

この方法で大きな結果セットを取得すると、アプリケーションに大きな負荷がかかります。PHP で結果を取得して処理する前に、データベースサーバーを使用して結果をできるだけ絞り込むことを検討する。

