PDOStatement::fetch — 結果セットから次の行を取得します (PHP 5 >= 5.1.0、PECL pdo >= 0.1.0)
混合 PDOStatement::fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )
PDOStatement オブジェクトに関連付けられた結果セットから次の行を取得します。 fetch_style パラメータは、POD が行を返す方法を決定します。
fetch_style
次の行を呼び出し元にどのように返すかを制御します。この値は PDO::FETCH_* 一連の定数のいずれかである必要があり、デフォルトは PDO::ATTR_DEFAULT_FETCH_MODE の値です (デフォルトは PDO::FETCH_BOTH)。
PDO::FETCH_ASSOC : 結果セットの列名によってインデックス付けされた配列を返します
PDO::FETCH_BOTH (デフォルト): 結果セットの列名と 0 から始まる列番号によってインデックス付けされた配列を返します。
PDO::FETCH_BOUND : TRUE
を返し、結果セットの列値を PDOStatement::bindColumn() メソッドによってバインドされた PHP 変数に割り当てます。
PDO::FETCH_CLASS : 結果セット内の列名をクラス内の対応する属性名にマッピングして、要求されたクラスの新しいインスタンスを返します。 fetch_style
に PDO::FETCH_CLASSTYPE が含まれる場合 (例: PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE )、クラス名は最初の列の値によって決まります。
PDO::FETCH_INTO : 要求されたクラスの既存のインスタンスを更新し、結果セット内の列をクラス内で指定された属性にマッピングします。
PDO::FETCH_LAZY : PDO::FETCH_BOTH をPDO::FETCH_OBJと組み合わせて使用して、アクセス用のオブジェクト変数名を作成します
PDO::FETCH_NUM : 0 で始まる結果セットの列番号にインデックス付けされた配列を返します。
PDO::FETCH_OBJ : 属性名が結果セットの列名に対応する匿名オブジェクトを返します。
Cursor_orientation PDOStatement オブジェクトによって表されるスクロール可能なカーソルの場合、この値は呼び出し元にどの行が返されるかを決定します。この値は PDO::FETCH_ORI_* 一連の定数の 1 つである必要があり、デフォルトは PDO::FETCH_ORI_NEXT です。 PDOStatement オブジェクトでスクロール可能なカーソルを使用するには、PDO::prepare() を使用して SQL ステートメントを準備するときに、PDO::ATTR_CURSOR 属性を PDO::CURSOR_SCROLL に設定する必要があります。
offsetcursor_orientation パラメーターが PDO::FETCH_ORI_ABS に設定された PDOStatement オブジェクトによって表されるスクロール可能カーソルの場合、この値は、取得される結果セット内の行の絶対行番号を指定します。 Cursor_orientation パラメータが PDO::FETCH_ORI_REL に設定された PDOStatement オブジェクトによって表されるスクロール可能カーソルの場合、この値は PDOStatement::fetch() を呼び出す前にカーソルを基準にしてフェッチされる行の位置を指定します。
成功時にこの関数 (メソッド) によって返される値は、抽出タイプによって異なります。どのような場合でも、失敗すると FALSE が返されます。
<?php$sth = $dbh->prepare("SELECT name, color FROM Fruit");$sth->execute();/* PDOStatement::fetch スタイルを使用*/print("PDO::FETCH_ASSOC: ") ;print("次の行を列名でインデックス付けされた配列として返しますn");$result = $sth->fetch(PDO::FETCH_ASSOC);print_r($result);print("n");print("PDO::FETCH_BOTH: ");print("両方の列でインデックス付けされた配列として次の行を返します名前と番号n");$result = $sth->fetch(PDO::FETCH_BOTH);print_r($result);print("n");print("PDO::FETCH_LAZY: ");print("列名を持つ匿名オブジェクトとして次の行を返しますプロパティとしてn");$result = $sth->fetch(PDO::FETCH_LAZY);print_r($result);print("n");print("PDO::FETCH_OBJ: ");print("列名を持つ匿名オブジェクトとして次の行を返しますプロパティとしてn");$result = $sth->fetch(PDO::FETCH_OBJ);print $result->NAME;print("n");?>
上記の例では次のように出力されます。
PDO::FETCH_ASSOC: 次の行を列 nameArray( [NAME] => apple [COLOUR] => red) でインデックスを付けた配列として返しますPDO::FETCH_BOTH: 次の行を列名とnumberArray( [NAME] の両方でインデックスを付けた配列として返します) ] => バナナ [0] => バナナ [COLOUR] => 黄色 [1] => 黄色)PDO::FETCH_LAZY: 次の行を匿名オブジェクトとして返します。列名をプロパティとしてPDORow Object( [NAME] => orange [COLOUR] => orange)PDO::FETCH_OBJ: 列名をプロパティとして持つ匿名オブジェクトとして次の行を返しますkiwi
<?phpfunction readDataForwards($dbh) { $sql = 'マイナンバーからハンド、勝ち、ベットを選択 ORDER BY BET'; try { $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO: :CURSOR_SCROLL)); $stmt->execute() while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) { $data = $row[0] . $row[2] . n"; print $data; } $stmt = null; } catch (PDOException $e) { print $e->getMessage(); }}関数readDataBackwards($dbh) { $sql = 'マイナンバーからハンド、勝ち、ベットを選択 ORDER BY ベット'; try { $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL) ); $stmt->実行(); $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST); $data = $row[1] . $row[2] 。 "n"; print $data; } while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_PRIOR)); $stmt = null; } catch (PDOException $e) { print $e->getMessage(); }}print "順方向の読み取り:n";readDataForwards($conn);print "逆方向の読み取り:n";readDataBackwards($conn);?>
上記の例では次のように出力されます。
順読み:21 10 516 0 519 20 10逆読み:19 20 1016 0 521 10 5