Vorgehensweise: Abrufen von Zeichendaten als Stream

SQL Server-Treiber für PHP nutzt PHP-Streams zum Abrufen großer Datenmengen vom Server. Das Beispiel diesem Thema veranschaulicht, wie Zeichendaten als Stream abgerufen werden.

Beispiel

Im folgenden Beispiel wird eine Zeile aus der Production.ProductReview-Tabelle der AdventureWorks-Datenbank abgerufen. Das Comments-Feld der zurückgegebenen Zeile wurde als Stream abgerufen und mithilfe der PHP-Funktion fpassthru angezeigt.

Mithilfe von sqlsrv_fetch und sqlsrv_get_field, wobei Zeichenstream als Rückgabetyp angegeben wird, lassen sich Daten als Stream abrufen. Der Rückgabetyp wird durch die Konstante SQLSRV_PHPTYPE_STREAM angegeben. Weitere Informationen zu sqlsrv-Konstanten finden Sie unter SQLSRV-Konstanten.

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 the Transact-SQL query. */
$tsql = "SELECT ReviewerName, 
               CONVERT(varchar(32), ReviewDate, 107) AS [ReviewDate],
               Rating, 
               Comments 
         FROM Production.ProductReview 
         WHERE ProductReviewID = ? ";

/* Set the parameter value. */
$productReviewID = 1;
$params = array( $productReviewID);

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

/* Retrieve and display the data. The first three fields are retrieved
as strings and the fourth as a stream with character encoding. */
if(sqlsrv_fetch( $stmt ) === false )
{
     echo "Error in retrieving row.\n";
     die( print_r( sqlsrv_errors(), true));
}

echo "Name: ".sqlsrv_get_field( $stmt, 0 )."\n";
echo "Date: ".sqlsrv_get_field( $stmt, 1 )."\n";
echo "Rating: ".sqlsrv_get_field( $stmt, 2 )."\n";
echo "Comments: ";
$comments = sqlsrv_get_field( $stmt, 3, 
                             SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_CHAR));
fpassthru($comments);

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

Weil für die ersten drei Felder kein PHP-Rückgabetyp angegeben wurde, wird jedes Feld mit dem entsprechenden PHP-Standardtyp zurückgegeben. Weitere Informationen zu den standardmäßigen PHP-Datentypen finden Sie unter PHP-Standarddatentypen. Weitere Informationen zum Festlegen von PHP-Rückgabetypen finden Sie unter Vorgehensweise: Angeben von PHP-Datentypen.

Siehe auch

Konzepte

Informationen zu den Codebeispielen in der Dokumentation

Weitere Ressourcen

Abrufen von Daten
Abrufen von Daten als Stream