Vergleichen der Funktionen für den Datenabruf

SQL Server-Treiber für PHP stellt die folgenden Optionen zum Abrufen von Daten aus einem Resultset zur Verfügung:

  • sqlsrv_fetch_array: Ruft die nächste Datenzeile als numerisch indiziertes Array, als assoziatives Array oder beides ab.

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

  • sqlsrv_fetch/sqlsrv_get_field: Wenn diese Funktionen zusammen verwendet werden, rufen sie das angegebene Feld aus einer Datenzeile ab. Die sqlsrv_fetch-Funktion macht die nächste Datenzeile zum Lesen verfügbar. Die sqlsrv_get_field-Funktion ruft Daten aus dem angegebenen Feld der aktuellen Zeile ab.

    Hinweis

    Die Kombination von sqlsrv_fetch und sqlsrv_get_field stellt schreibgeschützten Vorwärtszugriff auf Daten bereit.

Die sqlsrv_fetch_array-Funktion und die sqlsrv_fetch_object-Funktion laden eine ganze Zeile eines Resultsets in den Skriptspeicher und geben die Daten den PHP-Standardtypen entsprechend zurück. (Informationen zu den PHP-Standardtypen finden Sie unter PHP-Standarddatentypen.)

Im Gegensatz dazu wird mit der Kombination sqlsrv_fetch/sqlsrv_get_field nur ein Feld aus einem Resultset in den Skriptspeicher geladen, wobei der PHP-Rückgabetyp angegeben werden kann. (Informationen zum Angeben des PHP-Rückgabetyps finden Sie unter Vorgehensweise: Angeben von PHP-Datentypen.) Diese Kombination von Funktionen ermöglicht den Abruf von Daten als Stream. (Informationen zum Abrufen von Daten als Stream finden Sie unter Abrufen von Daten als Stream.)

Hinweis

Vermeiden Sie bei Verwendung einer der oben erwähnten Funktionen Vergleiche mit NULL-Werten als Bedingung für das Beenden von Schleifen. Weil die sqlsrv-Funktionen false zurückgeben, wenn ein Fehler auftritt, könnte der folgende Code in einer Endlosschleife resultieren, wenn in sqlsrv_fetch_array ein Fehler auftritt:

/*This code could result in an infinite loop. It is recommended that

you do NOT use null comparisons as the criterion for exiting loops,

as is done here. */

do{

$result = sqlsrv_fetch_array($stmt);

} while( !is_null($result));

Siehe auch

Weitere Ressourcen

Entwurfsaspekte
Abrufen von Daten