Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Hämtar nästa rad med data som en numeriskt indexerad matris, associativ matris eller båda.
Syntax
sqlsrv_fetch_array( resource $stmt[, int $fetchType [, row[, ]offset]])
Parameterar
$stmt: En instruktionsresurs som motsvarar en körd instruktion.
$fetchType [VALFRITT]: En fördefinierad konstant. Den här parametern kan ta på sig något av de värden som anges i följande tabell:
| Värde | Beskrivning |
|---|---|
| SQLSRV_FETCH_NUMERIC | Nästa rad med data returneras som en numerisk matris. |
| SQLSRV_FETCH_ASSOC | Nästa rad med data returneras som en associativ matris. Matrisnycklarna är kolumnnamnen i resultatuppsättningen. |
| SQLSRV_FETCH_BOTH | Nästa rad med data returneras som både en numerisk matris och en associativ matris. Det här är standardvärdet. |
rad [VALFRITT]: Har lagts till i version 1.1. Ett av följande värden anger vilken rad som ska kommas åt i en resultatuppsättning som använder en rullningsbar markör. (När raden har angetts måste fetchtype uttryckligen anges, även om du anger standardvärdet.)
- SQLSRV_SCROLL_NEXT
- SQLSRV_SCROLL_PRIOR
- SQLSRV_SCROLL_FIRST
- SQLSRV_SCROLL_LAST
- SQLSRV_SCROLL_ABSOLUTE
- SQLSRV_SCROLL_RELATIVE
Mer information om dessa värden finns i Ange en markörtyp och Välja rader. Stöd för rullningsbar markör lades till i version 1.1 av Microsoft Drivers for PHP för SQL Server.
offset [OPTIONAL]: Används med SQLSRV_SCROLL_ABSOLUTE och SQLSRV_SCROLL_RELATIVE för att ange raden som ska hämtas. Den första posten i resultatuppsättningen är 0.
Returvärde
Om en rad med data hämtas returneras en matris . Om det inte finns fler rader att hämta returneras null . Om ett fel inträffar returneras false .
Baserat på värdet för parametern $fetchType kan den returnerade matrisen vara en numeriskt indexerad matris, en associativ matris eller båda. Som standard returneras en matris med både numeriska och associativa nycklar. Datatypen för ett värde i den returnerade matrisen är php-standarddatatypen. Information om PHP-standarddatatyper finns i STANDARD-PHP-datatyper.
Anmärkningar
Om en kolumn utan namn returneras blir associativnyckeln för matriselementet en tom sträng (""). Tänk dig till exempel den här Transact-SQL-instruktionen som infogar ett värde i en databastabell och hämtar den servergenererade primärnyckeln:
INSERT INTO Production.ProductPhoto (LargePhoto) VALUES (?);
SELECT SCOPE_IDENTITY()
Om resultatuppsättningen som returneras av delen av den här instruktionen SELECT SCOPE_IDENTITY() hämtas som en associativ matris blir nyckeln för det returnerade värdet en tom sträng ("") eftersom den returnerade kolumnen inte har något namn. För att undvika detta kan du hämta resultatet som en numerisk matris, eller så kan du ange ett namn för den returnerade kolumnen i Transact-SQL-instruktionen. Följande instruktion är ett sätt att ange ett kolumnnamn i Transact-SQL:
SELECT SCOPE_IDENTITY() AS PictureID
Om en resultatuppsättning innehåller flera kolumner utan namn tilldelas värdet för den senast namnlösa kolumnen till den tomma strängnyckeln ("").
Exempel på associativ matris
I följande exempel hämtas varje rad i en resultatuppsättning som en associativ matris. 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 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);
?>
Exempel på indexerad matris
I följande exempel hämtas varje rad i en resultatuppsättning som en numeriskt indexerad matris.
Exemplet hämtar produktinformation från tabellen Purchasing.PurchaseOrderDetail i AdventureWorks-databasen för produkter som har ett angivet datum och en lagerförd kvantitet (StockQty) som är mindre än ett angivet värde.
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));
}
/* 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);
?>
Funktionen sqlsrv_fetch_array returnerar alltid data enligt PHP-standarddatatyperna. Information om hur du anger PHP-datatypen finns i Så här anger du PHP-datatyper.
Om ett fält utan namn hämtas blir associativnyckeln för matriselementet en tom sträng (""). Mer information finns i sqlsrv_fetch_array.
Se även
API-referens för SQLSRV-drivrutins-API:et
Om kodexempel i dokumentationen
programmeringsguide för Microsoft-drivrutiner för PHP för SQL Server