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