Dela via


Anvisningar: Ange PHP-datatyper

Ladda ned PHP-drivrutin

När du använder drivrutinen PDO_SQLSRV kan du ange PHP-datatypen när du hämtar data från servern med PDOStatement::bindColumn och PDOStatement::bindParam. Mer information finns i PDOStatement::bindColumn och PDOStatement::bindParam .

Följande steg sammanfattar hur du anger PHP-datatyper när du hämtar data från servern med hjälp av SQLSRV-drivrutinen:

  1. Konfigurera och köra en Transact-SQL fråga med sqlsrv_query eller en kombination av sqlsrv_prepare/sqlsrv_execute.

  2. Gör en rad med data tillgängliga för läsning med sqlsrv_fetch.

  3. Hämta fältdata från en returnerad rad genom att använda sqlsrv_get_field med önskad PHP-datatyp specificerad som den valfria tredje parametern. Om den valfria tredje parametern inte har angetts returneras data enligt php-standardtyperna. Information om php-standardreturtyperna finns i STANDARD-PHP-datatyper.

    Information om de konstanter som används för att ange PHP-datatypen finns i avsnittet PHPTYPES i Constants (Microsoft Drivers för PHP för SQL Server).

Example

I följande exempel hämtas rader från tabellen Production.ProductReview i AdventureWorks-databasen. I varje returnerad rad hämtas fältet ReviewDate som en sträng och fältet Kommentarer hämtas som en ström. Dataströmmen visas med hjälp av PHP-funktionen fpassthru.

Exemplet förutsätter att SQL Server och AdventureWorks-databasen är installerade på den lokala datorn. Alla utdata skrivs till konsolen när exemplet körs från kommandoraden.

<?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,   
                ReviewDate,  
                Rating,   
                Comments   
         FROM Production.ProductReview   
         WHERE ProductID = ?   
         ORDER BY ReviewDate DESC";  
  
/* Set the parameter value. */  
$productID = 709;  
$params = array( $productID);  
  
/* 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 and third fields are  
retrieved according to their default types, strings. The second field  
is retrieved as a string with 8-bit character encoding. The fourth  
field is retrieved as a stream with 8-bit character encoding.*/  
while ( sqlsrv_fetch( $stmt))  
{  
   echo "Name: ".sqlsrv_get_field( $stmt, 0 )."\n";  
   echo "Date: ".sqlsrv_get_field( $stmt, 1,   
                       SQLSRV_PHPTYPE_STRING( SQLSRV_ENC_CHAR))."\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);  
   echo "\n";   
}  
  
/* Free statement and connection resources. */  
sqlsrv_free_stmt( $stmt);  
sqlsrv_close( $conn);  
?>  

Om du i exemplet hämtar det andra fältet (ReviewDate) som en sträng bevaras millisekunders noggrannhet för SQL Server DATETIME-datatypen. Som standard hämtas SQL Server DATETIME-datatypen som ett PHP DateTime-objekt där millisekundernas noggrannhet går förlorad.

Hämtning av det fjärde fältet (kommentarer) som en dataström är i demonstrationssyfte. Som standard hämtas SQL Server-datatypen nvarchar(3850) som en sträng, vilket är acceptabelt för de flesta situationer.

Anmärkning

Funktionen sqlsrv_field_metadata tillhandahåller ett sätt att hämta fältinformation, inklusive typinformation, innan du kör en fråga.

Se även

Hämtar data

Om kodexempel i dokumentationen

Så här hämtar du utdataparametrar med SQLSRV-drivrutinen

Anvisningar: Hämta indata- och utdataparametrar med sqlsrv-drivrutinen