Sdílet prostřednictvím


Postupy: Určení datových typů PHP

Stáhnout ovladač PHP

Při použití ovladače PDO_SQLSRV můžete určit datový typ PHP při načítání dat ze serveru pomocí PDOStatement::bindColumn a PDOStatement::bindParam. Další informace najdete v tématu PDOStatement::bindColumn a PDOStatement::bindParam .

Následující postup shrnuje, jak určit datové typy PHP při načítání dat ze serveru pomocí ovladače SQLSRV:

  1. Nastavte a spusťte Transact-SQL dotaz s sqlsrv_query nebo kombinací sqlsrv_prepare/sqlsrv_execute.

  2. Zpřístupnění řádku dat pro čtení pomocí sqlsrv_fetch

  3. Načtěte data polí z vráceného řádku pomocí sqlsrv_get_field s požadovaným datovým typem PHP zadaným jako volitelný třetí parametr. Pokud není zadán volitelný třetí parametr, vrátí se data podle výchozích typů PHP. Informace o výchozích návratových typech PHP naleznete v tématu Výchozí datové typy PHP.

    Informace o konstantách použitých k určení datového typu PHP najdete v části Konstanty (Ovladače Microsoftu pro PHP pro SQL Server).

Example

Následující příklad načte řádky z tabulky Production.ProductReview databáze AdventureWorks. V každém vráceném řádku se pole ReviewDate načte jako řetězec a pole Komentáře se načte jako datový proud. Data datového proudu se zobrazí pomocí funkce fpassthru PHP.

Příklad předpokládá, že SQL Server a databáze AdventureWorks jsou nainstalovány v místním počítači. Při spuštění příkladu z příkazového řádku se veškerý výstup zapíše do konzoly.

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

V příkladu načtení druhého pole (ReviewDate) jako řetězce zachovává přesnost milisekund datového typu DATETIME SQL Serveru. Ve výchozím nastavení se datový typ DATETIME SQL Serveru načte jako objekt PHP DateTime, ve kterém dojde ke ztrátě přesnosti milisekund.

Načtení čtvrtého pole (Komentáře) jako datového proudu je určeno pro ukázkové účely. Ve výchozím nastavení se datový typ SQL Serveru nvarchar(3850) načte jako řetězec, který je pro většinu situací přijatelný.

Poznámka:

Funkce sqlsrv_field_metadata poskytuje způsob, jak před spuštěním dotazu získat informace o poli, včetně informací o typu.

Viz také

Načítání dat

Příklady kódu v dokumentaci

Postupy: Načtení výstupních parametrů pomocí ovladače SQLSRV

Postupy: Načtení vstupních a výstupních parametrů pomocí ovladače SQLSRV