Sdílet prostřednictvím


sqlsrv_fetch_array

Stáhnout ovladač PHP

Načte další řádek dat jako číselně indexovanou matici, asociativní pole nebo obojí.

Syntaxe

  
sqlsrv_fetch_array( resource $stmt[, int $fetchType [, row[, ]offset]])  

Parametry

$stmt: Prostředek příkazu odpovídající provedenému příkazu.

$fetchType [VOLITELNÉ]: Předdefinovaná konstanta. Tento parametr může převzít jednu z hodnot uvedených v následující tabulce:

Hodnota Popis
SQLSRV_FETCH_NUMERIC Další řádek dat se vrátí jako číselná matice.
SQLSRV_FETCH_ASSOC Další řádek dat se vrátí jako asociativní pole. Maticové klíče jsou názvy sloupců v sadě výsledků.
SQLSRV_FETCH_BOTH Další řádek dat se vrátí jako číselná matice i asociativní matice. Toto je výchozí hodnota.

řádek [VOLITELNÉ]: Přidáno ve verzi 1.1. Jedna z následujících hodnot určující řádek pro přístup k sadě výsledků, která používá posouvání kurzoru. (Je-li zadán řádek , musí být explicitně zadán typ načtení , i když zadáte výchozí hodnotu.)

  • SQLSRV_SCROLL_NEXT
  • SQLSRV_SCROLL_PRIOR
  • SQLSRV_SCROLL_FIRST
  • SQLSRV_SCROLL_LAST
  • SQLSRV_SCROLL_ABSOLUTE
  • SQLSRV_SCROLL_RELATIVE

Další informace o těchto hodnotách naleznete v tématu Zadání typu kurzoru a výběru řádků. Podpora posouvání kurzoru byla přidána ve verzi 1.1 ovladačů Microsoft pro PHP pro SQL Server.

offset [OPTIONAL]: Používá se s SQLSRV_SCROLL_ABSOLUTE a SQLSRV_SCROLL_RELATIVE k určení řádku, který se má načíst. První záznam v sadě výsledků je 0.

Návratová hodnota

Pokud se načte řádek dat, vrátí se pole . Pokud nejsou k dispozici žádné další řádky k načtení, vrátí se hodnota null . Pokud dojde k chybě, vrátí se false .

Vrácená matice může být na základě hodnoty parametru $fetchType číselně indexovaná matice, asociativní matice nebo obojí. Ve výchozím nastavení se vrátí pole s číselnými i asociativními klíči. Datový typ hodnoty ve vráceném poli bude výchozím datovým typem PHP. Informace o výchozích datových typech PHP naleznete v tématu Výchozí datové typy PHP.

Poznámky

Pokud se vrátí sloupec bez názvu, asociativní klíč pro prvek pole bude prázdný řetězec (""). Představte si například tento příkaz Transact-SQL, který vloží hodnotu do databázové tabulky a načte serverově vygenerovaný primární klíč:

INSERT INTO Production.ProductPhoto (LargePhoto) VALUES (?);  
SELECT SCOPE_IDENTITY()

Pokud je sada výsledků vrácená SELECT SCOPE_IDENTITY() částí tohoto příkazu načtena jako asociativní pole, klíč pro vrácenou hodnotu bude prázdný řetězec (""), protože vrácený sloupec nemá žádný název. Abyste tomu předešli, můžete výsledek načíst jako číselnou matici nebo můžete zadat název vráceného sloupce v příkazu Transact-SQL. Následující příkaz je jedním ze způsobů, jak zadat název sloupce v jazyce Transact-SQL:

SELECT SCOPE_IDENTITY() AS PictureID

Pokud sada výsledků obsahuje více sloupců bez názvů, přiřadí se hodnota posledního nepojmenovaného sloupce k prázdnému řetězci ("").

Příklad asociativního pole

Následující příklad načte každý řádek sady výsledků jako asociativní pole. 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 and execute the query. */  
$tsql = "SELECT FirstName, LastName  
         FROM Person.Contact  
         WHERE LastName='Alan'";  
$stmt = sqlsrv_query( $conn, $tsql);  
if( $stmt === false)  
{  
     echo "Error in query preparation/execution.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Retrieve each row as an associative array and display the results.*/  
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))  
{  
      echo $row['LastName'].", ".$row['FirstName']."\n";  
}  
  
/* Free statement and connection resources. */  
sqlsrv_free_stmt( $stmt);  
sqlsrv_close( $conn);  
?>  

Příklad indexovaného pole

Následující příklad načte každý řádek sady výsledků jako číselně indexované pole.

Příklad načte informace o produktu z tabulky Purchaseing.PurchaseOrderDetail databáze AdventureWorks pro produkty, které mají zadané datum a skladované množství (StockQty) menší než zadaná hodnota.

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));  
}  
  
/* Define the query. */  
$tsql = "SELECT ProductID,  
                UnitPrice,  
                StockedQty   
         FROM Purchasing.PurchaseOrderDetail  
         WHERE StockedQty < 3   
         AND DueDate='2002-01-29'";  
  
/* Execute the query. */  
$stmt = sqlsrv_query( $conn, $tsql);  
if ( $stmt )  
{  
     echo "Statement executed.\n";  
}   
else   
{  
     echo "Error in statement execution.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Iterate through the result set printing a row of data upon each  
iteration.*/  
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC))  
{  
     echo "ProdID: ".$row[0]."\n";  
     echo "UnitPrice: ".$row[1]."\n";  
     echo "StockedQty: ".$row[2]."\n";  
     echo "-----------------\n";  
}  
  
/* Free statement and connection resources. */  
sqlsrv_free_stmt( $stmt);  
sqlsrv_close( $conn);  
?>  

Funkce sqlsrv_fetch_array vždy vrací data podle výchozích datových typů PHP. Informace o tom, jak zadat datový typ PHP, naleznete v tématu Postupy: Určení datových typů PHP.

Pokud se načte pole bez názvu, asociativní klíč pro prvek pole bude prázdný řetězec (""). Další informace najdete v tématu sqlsrv_fetch_array.

Viz také

Referenční rozhraní API ovladače SQLSRV

Načítání dat

O příkladech kódu v dokumentaci

Průvodce programováním pro ovladače Microsoftu pro PHP pro SQL Server