PDOStatement::setFetchMode
PHP Manual
PHP Manual»PDOStatement»PDOStatement::setFetchMode

PDOStatement::setFetchMode

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.0)

PDOStatement::setFetchMode — この文に対するデフォルトのフェッチモードを設定する

説明

public function PDOStatement::setFetchMode(int $mode): true
public function PDOStatement::setFetchMode(int $mode = PDO::FETCH_COLUMN, int $colno): true
public function PDOStatement::setFetchMode(int $mode = PDO::FETCH_CLASS, string $class, ?array $constructorArgs = null): true
public function PDOStatement::setFetchMode(int $mode = PDO::FETCH_INTO, object $object): true

パラメータ

mode

フェッチモードは、PDO::FETCH_* 定数の 1つでなければなりません。

colno

カラム番号。

class

クラス名。

constructorArgs

コンストラクタの引数。 PHP 8.5.0 以降、文字列のキーは名前付き引数のように振る舞います。 変数をリファレンス渡しするには、配列の要素にリファレンスを代入します: $constructorArgs = [&$valByRef]。

object

オブジェクト。

戻り値

常に true を返します。

エラー / 例外

PHP 8.5.0 以降、PDOStatement::fetch(), PDOStatement::fetchObject(), PDOStatement::fetchAll() の呼び出し中に このメソッドを呼び出すと、Error がスローされます。

変更履歴

バージョン 説明
8.5.0 PDO::FETCH_CLASS の constructorArgs が、CUFA (call_user_func_array()) の規約に従うようになりました。 つまり、文字列のキーは名前付き引数のように振る舞い、 リファレンス渡しのパラメータに渡される値渡し引数の自動ラップが廃止されました。
8.5.0 PDOStatement::fetch(), PDOStatement::fetchObject(), PDOStatement::fetchAll() の呼び出し中に このメソッドを呼び出すと、Error がスローされるようになりました。
8.4.0 戻り値の型が、true になりました。これより前のバージョンでは、bool でした。

例

例1 フェッチモードを設定する

以下の例は PDOStatement::setFetchMode() がどの様に PDOStatementオブジェクトに対するデフォルトのフェッチモードを 変更するかを例示しています。

<?php
$stmt = $dbh->query('SELECT name, colour, calories FROM fruit');
$stmt->setFetchMode(PDO::FETCH_NUM);
foreach ($stmt as $row) {
    print $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
}

上の例の出力は、 たとえば以下のようになります。

apple   red     150
banana  yellow  250
orange  orange  300
kiwi    brown   75
lemon   yellow  25
pear    green   150

To Top