PDOStatement::fetch
Ruft eine Zeile aus einem Resultset ab.
Syntax
mixed PDOStatement::fetch ([ $fetch_style[, $cursor_orientation[, $cursor_offset]]] );
Parameter
$fetch_style: Ein optionales ganzzahliges Symbol, das das Format der Zeilendaten angibt. Eine Liste der möglichen Werte für $fetch_style finden Sie im Abschnitt „Anmerkungen“. Der Standardwert ist PDO::FETCH_BOTH. $fetch_style in der Abrufmethode überschreibt die Angabe von $fetch_style in der PDO::query-Methode.
$cursor_orientation: Ein optionales ganzzahliges Symbol, das die Zeile angibt, die abgerufen werden soll, wenn die prepare-Anweisung PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL
angibt. Eine Liste der möglichen Werte für $cursor_orientation finden Sie im Abschnitt „Anmerkungen“. Ein Beispiel mit einem bildlauffähigen Cursor finden Sie unter PDO::prepare .
$cursor_offset: : Ein optionales ganzzahliges Symbol, das die Zeile angibt, die abgerufen werden soll, wenn $cursor_orientation entweder PDO::FETCH_ORI_ABS oder PDO::FETCH_ORI_REL und PDO::ATTR_CURSOR PDO::CURSOR_SCROLL ist.
Rückgabewert
Ein gemischter Wert, der eine Zeile oder „false“ zurückgibt.
Bemerkungen
Der Cursor wird automatisch vorgerückt, wenn FETCH aufgerufen wird. Die folgende Tabelle enthält die Liste der möglichen Werte für $fetch_style.
$fetch_style | BESCHREIBUNG |
---|---|
PDO::FETCH_ASSOC | Gibt ein Array an, das von einem Spaltennamen indiziert ist. |
PDO::FETCH_BOTH | Gibt ein Array an, das von einem Spaltennamen und einer 0-basierten Reihenfolge indiziert ist. Dies ist die Standardoption. |
PDO::FETCH_BOUND | Gibt „true“ zurück und weist die Werte gemäß PDOStatement::bindColumnzu. |
PDO::FETCH_CLASS | Erstellt eine Instanz und ordnet Spalten den benannten Eigenschaften zu. Rufen Sie PDOStatement::setFetchMode auf, bevor Sie FETCH aufrufen. |
PDO::FETCH_INTO | Aktualisiert eine Instanz der angeforderten Klasse. Rufen Sie PDOStatement::setFetchMode auf, bevor Sie FETCH aufrufen. |
PDO::FETCH_LAZY | Erstellt Namen von Variablen während des Zugriffs sowie ein unbenanntes Objekt. |
PDO::FETCH_NUM | Gibt ein Array an, das von einer nullbasierten Spaltenreihenfolge indiziert ist. |
PDO::FETCH_OBJ | Gibt ein unbenanntes Objekt mit Eigenschaftennamen an, die Spaltennamen zugeordnet sind. |
Wenn sich der Cursor am Ende des Resultsets befindet (die letzte Zeile wurde abgerufen und der Cursor befindet sich außerhalb der Begrenzung des Resultsets) und es sich um einen Vorwärtscursor handelt (PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY), schlagen nachfolgende FETCH-Aufrufe fehl.
Wenn der Cursor bildlauffähig ist (PDO::ATTR_CURSOR = PDO::CURSOR_SCROLL), wird FETCH den Cursor innerhalb der Begrenzung des Resultsets bewegen. Die folgende Tabelle enthält die Liste der möglichen Werte für $cursor_orientation.
$cursor_orientation | BESCHREIBUNG |
---|---|
PDO::FETCH_ORI_NEXT | Ruft die nächste Zeile ab. Dies ist die Standardoption. |
PDO::FETCH_ORI_PRIOR | Ruft die vorherige Zeile ab. |
PDO::FETCH_ORI_FIRST | Ruft die erste Zeile ab. |
PDO::FETCH_ORI_LAST | Ruft die letzte Zeile ab. |
PDO::FETCH_ORI_ABS, num | Ruft die in $cursor_offset angeforderte Zeile über die Zeilennummer ab. |
PDO::FETCH_ORI_REL, num | Ruft die in $cursor_offset angeforderte Zeile über die relative Position von der aktuellen Position ab. |
Wenn der für $cursor_offset oder $cursor_orientation angegebene Wert eine Position außerhalb der Grenzen des Resultsets ergibt, tritt ein Fehler beim Abruf auf.
Unterstützung für PDO wurde in Version 2.0 von Microsoft-Treiber für PHP für SQL Serverhinzugefügt.
Beispiel
<?php
$server = "(local)";
$database = "AdventureWorks";
$conn = new PDO( "sqlsrv:server=$server ; Database = $database", "", "");
print( "\n---------- PDO::FETCH_CLASS -------------\n" );
$stmt = $conn->query( "select * from HumanResources.Department order by GroupName" );
class cc {
function __construct( $arg ) {
echo "$arg";
}
function __toString() {
return $this->DepartmentID . "; " . $this->Name . "; " . $this->GroupName;
}
}
$stmt->setFetchMode(PDO::FETCH_CLASS, 'cc', array( "arg1 " ));
while ( $row = $stmt->fetch(PDO::FETCH_CLASS)) {
print($row . "\n");
}
print( "\n---------- PDO::FETCH_INTO -------------\n" );
$stmt = $conn->query( "select * from HumanResources.Department order by GroupName" );
$c_obj = new cc( '' );
$stmt->setFetchMode(PDO::FETCH_INTO, $c_obj);
while ( $row = $stmt->fetch(PDO::FETCH_INTO)) {
echo "$c_obj\n";
}
print( "\n---------- PDO::FETCH_ASSOC -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_ASSOC );
print_r( $result );
print( "\n---------- PDO::FETCH_NUM -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_NUM );
print_r ($result );
print( "\n---------- PDO::FETCH_BOTH -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_BOTH );
print_r( $result );
print( "\n---------- PDO::FETCH_LAZY -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_LAZY );
print_r( $result );
print( "\n---------- PDO::FETCH_OBJ -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_OBJ );
print $result->Name;
print( "\n \n" );
print( "\n---------- PDO::FETCH_BOUND -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$stmt->bindColumn('Name', $name);
$result = $stmt->fetch( PDO::FETCH_BOUND );
print $name;
print( "\n \n" );
?>