Поделиться через


Практическое руководство. Извлечение символьных данных в виде потока с помощью драйвера SQLSRV

Скачать драйвер PHP

Извлечение данных в виде потока доступно только в драйвере SQLSRV Драйверы Microsoft SQL Server для PHP и недоступно в драйвере PDO_SQLSRV.

Драйвер SQLSRV использует преимущества потоков PHP для извлечения больших объемов данных с сервера. Пример в этой статье показывает, как извлекать символьные данные в виде потока.

Пример

Следующий пример извлекает строку из таблицы Production.ProductReview базы данных AdventureWorks. Поле Comments возвращенной строки извлекается в виде потока и отображается с помощью функции fpassthru PHP.

Извлечение данных в виде потока осуществляется с помощью sqlsrv_fetch и sqlsrv_get_field с типом возвращаемого значения, указанным в виде потока символов. Тип возвращаемого значения определяется с помощью константы SQLSRV_PHPTYPE_STREAM. Сведения о константах sqlsrv см. в статье Константы (драйверы Майкрософт для PHP для SQL Server).

В примере предполагается, что SQL Server и базы данных AdventureWorks установлены на локальном компьютере. При выполнении примера из командной строки все выходные данные выводятся в консоль.

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

Поскольку тип возвращаемых данных PHP для первых трех полей не задан, каждое поле возвращается в соответствии с его типом PHP по умолчанию. Дополнительные сведения о типах данных PHP по умолчанию см. в статье Default PHP Data Types. Дополнительные сведения об указании типов возвращаемых данных PHP см. в статье How to: Specify PHP Data Types.

См. также:

Извлечение данных

Извлечение данных в виде потока с помощью драйвера SQLSRV

Информация о примерах кода в документации