(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.0)
PDOStatement::setFetchMode — この文に対するデフォルトのフェッチモードを設定する
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