Megosztás a következőn keresztül:


sqlsrv_fetch_array

PHP-illesztőprogram letöltése

A következő adatsort numerikusan indexelt tömbként, asszociatív tömbként vagy mindkettőként kéri le.

Szemantika

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

Paraméterek

$stmt: Egy végrehajtott utasításnak megfelelő utasításerőforrás.

$fetchType [NEM KÖTELEZŐ]: Előre definiált állandó. Ez a paraméter a következő táblázatban felsorolt értékek egyikét veheti fel:

Érték Leírás
SQLSRV_FETCH_NUMERIC A következő adatsor numerikus tömbként lesz visszaadva.
SQLSRV_FETCH_ASSOC A következő adatsor asszociatív tömbként lesz visszaadva. A tömbkulcsok az eredményhalmaz oszlopnevei.
SQLSRV_FETCH_BOTH A következő adatsor numerikus és asszociatív tömbként is visszaadható. Ez az alapértelmezett érték.

sor [NEM KÖTELEZŐ]: Hozzáadva az 1.1-es verzióhoz. Az alábbi értékek egyike, amely egy görgethető kurzort használó eredményhalmazban adja meg a elérendő sort. (Ha sor van megadva, a fetchtype értéket explicit módon kell megadni, még akkor is, ha az alapértelmezett értéket adja meg.)

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

Ezekről az értékekről további információt a Kurzor típusának megadása és a Sorok kijelölése című témakörben talál. A görgethető kurzor támogatása a Microsoft Drivers for PHP for SQL Server 1.1-es verziójában lett hozzáadva.

eltolás [NEM KÖTELEZŐ]: SQLSRV_SCROLL_ABSOLUTE és SQLSRV_SCROLL_RELATIVE használatával adja meg a lekérendő sort. Az eredményhalmaz első rekordja 0.

Visszaadott érték

Ha beolvas egy adatsort, a rendszer egy tömböt ad vissza. Ha nincs több beolvasandó sor, a rendszer null értéket ad vissza. Hiba esetén a függvény hamis értéket ad vissza.

A $fetchType paraméter értéke alapján a visszaadott tömb lehet numerikusan indexelt tömb, asszociatív tömb vagy mindkettő. Alapértelmezés szerint a függvény numerikus és asszociatív kulcsokat is tartalmazó tömböt ad vissza. A visszaadott tömbben egy érték adattípusa lesz az alapértelmezett PHP-adattípus. Az alapértelmezett PHP-adattípusokról további információt az Alapértelmezett PHP-adattípusok című témakörben talál.

Megjegyzések

Ha egy név nélküli oszlopot ad vissza, a tömbelem asszociatív kulcsa egy üres sztring (""). Vegyük például ezt a Transact-SQL utasítást, amely egy értéket szúr be egy adatbázistáblába, és lekéri a kiszolgáló által létrehozott elsődleges kulcsot:

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

Ha az utasítás része által SELECT SCOPE_IDENTITY() visszaadott eredményhalmaz asszociatív tömbként lesz lekérve, a visszaadott érték kulcsa egy üres sztring ("") lesz, mivel a visszaadott oszlopnak nincs neve. Ennek elkerülése érdekében lekérheti az eredményt numerikus tömbként, vagy megadhatja a visszaadott oszlop nevét a Transact-SQL utasításban. Az alábbi utasítással megadhat egy oszlopnevet a Transact-SQL-ben:

SELECT SCOPE_IDENTITY() AS PictureID

Ha egy eredményhalmaz több, név nélküli oszlopot tartalmaz, az utolsó névtelen oszlop értéke hozzá lesz rendelve az üres sztring ("") kulcshoz.

Asszociatív tömb példa

Az alábbi példa egy eredményhalmaz minden sorát asszociatív tömbként kéri le. A példa feltételezi, hogy az SQL Server és az AdventureWorks adatbázis telepítve van a helyi számítógépen. A rendszer minden kimenetet a konzolra ír, amikor a példa a parancssorból fut.

<?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élda indexelt tömbre

Az alábbi példa egy eredményhalmaz minden sorát numerikusan indexelt tömbként kéri le.

A példa az AdventureWorks adatbázis Purchaseing.PurchaseOrderDetail táblájából kéri le a termékinformációkat olyan termékek esetében, amelyek egy megadott dátummal és egy megadott értéknél kisebb készletezett mennyiségben (StockQty) vannak tárolva.

A példa feltételezi, hogy az SQL Server és az AdventureWorks adatbázis telepítve van a helyi számítógépen. A rendszer minden kimenetet a konzolra ír, amikor a példa a parancssorból fut.

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

A sqlsrv_fetch_array függvény mindig az alapértelmezett PHP-adattípusoknak megfelelően adja vissza az adatokat. A PHP-adattípus megadásáról további információt a Hogyan lehet: PHP-adattípusok megadása című témakörben talál.

Ha egy név nélküli mezőt kér le, a tömbelem asszociatív kulcsa egy üres sztring (""). További információ: sqlsrv_fetch_array.

Lásd még:

SQLSRV Driver API-referencia

Adatok beolvasása

A dokumentációban szereplő példakódokkal kapcsolatos

MICROSOFT Drivers for PHP az SQL Serverhez programozási útmutató