sqlsrv_fetch_object

Ruft die nächste Datenzeile als PHP-Objekt ab.

Syntax

sqlsrv_fetch_object( resource $stmt [, string $className [, array $ctorParams[, row[, ]offset]]])

Parameter

$stmt: Eine Anweisungsressource, die einer ausgeführten Anweisung entspricht.

$className [OPTIONAL]: Eine Zeichenfolge, die den Namen der zu instanziierenden Klasse angibt. Wenn für den $className-Parameter kein Wert angegeben ist, wird eine Instanz der PHP-Klasse stdClass instanziiert.

$ctorParams [OPTIONAL]: Ein Array, das Werte enthält, die an den Konstruktor der mit dem $className-Parameter angegebenen Klasse übergeben werden. Wenn der Konstruktor der angegebenen Klasse Parameterwerte annimmt, muss der $ctorParams-Parameter beim Aufruf von sqlsrv_fetch_object verwendet werden.

row [OPTIONAL]: Hinzugefügt in Version 1.1. Einer der folgenden Werte, mit dem die Zeile angegeben wird, auf die in einem Resultset mit einem scrollfähigen Cursor zugegriffen werden soll. (Wenn row angegeben wird, müssen $className und $ctorParams explizit angegeben werden, auch wenn Sie NULL für $className und $ctorParams angeben müssen.)

  • SQLSRV_SCROLL_NEXT
  • SQLSRV_SCROLL_PRIOR
  • SQLSRV_SCROLL_FIRST
  • SQLSRV_SCROLL_LAST
  • SQLSRV_SCROLL_ABSOLUTE
  • SQLSRV_SCROLL_RELATIVE

Weitere Informationen zu diesen Werten finden Sie unter Angeben eines Cursortyps und Auswählen von Zeilen. Die Unterstützung für scrollfähige Cursor wurde in Version 1.1 von SQL Server-Treiber für PHP hinzugefügt.

offset [OPTIONAL]: Wird mit SQLSRV_SCROLL_ABSOLUTE und SQLSRV_SCROLL_RELATIVE verwendet, um die abzurufende Zeile anzugeben. Der erste Datensatz im Resultset ist 0.

Rückgabewert

Ein PHP-Objekt mit Eigenschaften, die den Resultsetfeldnamen entsprechen. Eigenschaftswerte werden mit den entsprechenden Resultsetfeldwerten aufgefüllt. Wenn die mit dem optionalen $className-Parameter angegebene Klasse nicht vorhanden ist oder der angegebenen Anweisung kein aktives Resultset zugeordnet ist, wird false zurückgegeben. Wenn keine weiteren Zeilen abrufbar sind, wird null zurückgegeben.

Der Datentyp der Werte im zurückgegebenen Objekt entspricht dem PHP-Standarddatentyp. Weitere Informationen zu den standardmäßigen PHP-Datentypen finden Sie unter PHP-Standarddatentypen.

Hinweise

Wenn ein Klassenname mit dem optionalen $className-Parameter angegeben wird, wird ein Objekt dieses Klassentyps instanziiert. Wenn die Klasse Eigenschaften aufweist, deren Namen mit den Resultsetfeldnamen übereinstimmen, werden die entsprechenden Resultsetwerte für die Eigenschaften übernommen. Wenn ein Resultsetfeldname nicht mit einer Klasseneigenschaft übereinstimmt, wird dem Objekt eine Eigenschaft mit dem Resultsetfeldnamen hinzugefügt und der Resultsetwert für die Eigenschaft übernommen. Weitere Informationen zum Aufrufen von sqlsrv_fetch_object mit dem $className-Parameter finden Sie unter Vorgehensweise: Abrufen von Daten als Objekt.

Wenn ein Feld ohne Namen zurückgegeben wird, verwirft sqlsrv_fetch_object den Feldwert und gibt eine Warnung aus. Im folgenden Beispiel wird mit einer Transact-SQL-Anweisung ein Wert in eine Datenbanktabelle eingefügt und der vom Server generierte primäre Schlüssel abgerufen:

INSERT INTO Production.ProductPhoto (LargePhoto) VALUES (?);

SELECT SCOPE_IDENTITY()

Wenn die von dieser Abfrage zurückgegebenen Ergebnisse mit sqlsrv_fetch_object abgerufen werden, wird der von SELECT SCOPE_IDENTITY() zurückgegebene Wert verworfen und eine Warnung ausgegeben. Sie können, um dies zu vermeiden, einen Namen für das zurückgegebene Feld in der Transact-SQL-Anweisung angeben. Ein Spaltenname kann beispielsweise wie folgt in Transact-SQL angegeben werden:

SELECT SCOPE_IDENTITY() AS PictureID

Beispiel

Im folgenden Beispiel wird jede Zeile eines Resultsets als PHP-Objekt abgerufen. Im Beispiel wird davon ausgegangen, dass SQL Server und die AdventureWorks-Datenbank auf dem lokalen Computer installiert sind. Alle Ausgaben werden in die Konsole geschrieben, wenn das Beispiel über die Befehlszeile ausgeführt wird.

<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
     echo "Could not connect.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Set up and execute the query. */
$tsql = "SELECT FirstName, LastName
         FROM Person.Contact
         WHERE LastName='Alan'";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
     echo "Error in query preparation/execution.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Retrieve each row as a PHP object and display the results.*/
while( $obj = sqlsrv_fetch_object( $stmt))
{
      echo $obj->LastName.", ".$obj->FirstName."\n";
}

/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>

Siehe auch

Konzepte

Vergleichen der Funktionen für den Datenabruf
Informationen zu den Codebeispielen in der Dokumentation

Weitere Ressourcen

Abrufen von Daten
API-Referenz (SQL Server-Treiber für PHP)