Vorgehensweise: Abrufen von Daten als Array

SQL Server-Treiber für PHP bietet die sqlsrv_fetch_array-Funktion zum Abrufen einer Datenzeile als Array. Dieses Thema enthält zwei Beispiele zum Abrufen von Zeilendaten als Array:

  • Im ersten Beispiel wird untersucht, wie mit sqlsrv_fetch_array eine Datenzeile als numerisch indiziertes Array abgerufen wird.

  • Im zweiten Beispiel wird untersucht, wie mit sqlsrv_fetch_array eine Datenzeile als assoziatives Array abgerufen wird.

    Hinweis

    Standardmäßig ruft sqlsrv_fetch_array ein Array mit numerischen und assoziativen Schlüsseln ab.

Beispiel

Im folgenden Beispiel wird jede Zeile eines Resultsets als numerisch indiziertes Array abgerufen.

In dem Beispiel werden Produktinformationen aus der Purchasing.PurchaseOrderDetail-Tabelle der AdventureWorks-Datenbank für Produkte abgerufen, die ein bestimmtes Datum haben und für die ein Lagerbestand (StockQty) vorhanden ist, der unter einem festgelegten Wert liegt.

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));
}

/* Define the query. */
$tsql = "SELECT ProductID,
                UnitPrice,
                StockedQty 
         FROM Purchasing.PurchaseOrderDetail
         WHERE StockedQty < 3 
         AND DueDate='2002-01-29'";

/* Execute the query. */
$stmt = sqlsrv_query( $conn, $tsql);
if ( $stmt )
{
     echo "Statement executed.\n";
} 
else 
{
     echo "Error in statement execution.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Iterate through the result set printing a row of data upon each
iteration.*/
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC))
{
     echo "ProdID: ".$row[0]."\n";
     echo "UnitPrice: ".$row[1]."\n";
     echo "StockedQty: ".$row[2]."\n";
     echo "-----------------\n";
}

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

Die sqlsrv_fetch_array-Funktion gibt stets Daten zurück, die PHP-Standarddatentypen entsprechen. Weitere Informationen zum Festlegen des PHP-Datentyps finden Sie unter Vorgehensweise: Angeben von PHP-Datentypen oder Vorgehensweise: Abrufen eines einzelnen Felds.

Wenn ein Feld ohne Namen abgerufen wird, ist der assoziative Schlüssel für das Arrayelement eine leere Zeichenfolge (""). Weitere Informationen finden Sie unter sqlsrv_fetch_array.

Im nächsten Beispiel wird jede Zeile eines Resultsets als assoziatives Array abgerufen. Schlüssel für das Array entsprechen den Spaltennamen des Resultsets.

In dem Beispiel werden Produktinformationen aus der Purchasing.PurchaseOrderDetail-Tabelle der AdventureWorks-Datenbank für Produkte abgerufen, für die ein Lagerbestand (StockQty) vorhanden ist, der unter einem festgelegten Wert liegt, und die ein bestimmtes Fälligkeitsdatum (DueDate) haben.

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));
}

/* Define the query. */
$tsql = "SELECT ProductID,
                UnitPrice,
                StockedQty 
         FROM Purchasing.PurchaseOrderDetail
         WHERE StockedQty < 3
         AND DueDate='2002-01-29'";

/* Execute the query. */
$stmt = sqlsrv_query( $conn, $tsql);
if ( $stmt )
{
     echo "Statement executed.\n";
} 
else 
{
     echo "Error in statement execution.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Iterate through the result set printing a row of data upon each
 iteration. Note that the returned array is an associative array with
 keys corresponding to column names of the result set. */
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))
{
     echo "ProdID: ".$row['ProductID']."\n";
     echo "UnitPrice: ".$row['UnitPrice']."\n";
     echo "StockedQty: ".$row['StockedQty']."\n";
     echo "-----------------\n";
}

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

Die sqlsrv_fetch_array-Funktion gibt stets Daten zurück, die PHP-Standarddatentypen entsprechen. Weitere Informationen zum Festlegen des PHP-Datentyps finden Sie unter Vorgehensweise: Angeben von PHP-Datentypen oder Vorgehensweise: Abrufen eines einzelnen Felds.

Siehe auch

Konzepte

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

Weitere Ressourcen

Abrufen von Daten
Programmierhinweise