sqlsrv_fetch_array

(No version information available, might only be in Git)

sqlsrv_fetch_arrayRetourne une ligne sous la forme d'un tableau

Description

sqlsrv_fetch_array(
    resource $stmt,
    int $fetchType = ?,
    int $row = ?,
    int $offset = ?
): array

Retourne la prochaine ligne de données disponible sous la forme d'un tableau associatif, d'un tableau numérique ou les deux (par défaut).

Liste de paramètres

stmt

Une ressource de requête retournée par sqlsrv_query ou sqlsrv_prepare.

fetchType

Une constante prédéfinie spécifiant le type de tableau à retourner. Les valeurs possibles sont SQLSRV_FETCH_ASSOC, SQLSRV_FETCH_NUMERIC, et SQLSRV_FETCH_BOTH (la valeur par défaut).

Le type de récupération SQLSRV_FETCH_ASSOC ne doit pas être utilisé lors du traitement d'un jeu de résultats possédant des colonnes dont le nom est identique.

row

Spécifie la ligne à traiter dans le jeu de résultats utilisant un curseur scrollable. Les valeurs possibles sont SQLSRV_SCROLL_NEXT, SQLSRV_SCROLL_PRIOR, SQLSRV_SCROLL_FIRST, SQLSRV_SCROLL_LAST, SQLSRV_SCROLL_ABSOLUTE et, SQLSRV_SCROLL_RELATIVE (la valeur par défaut). Lorsque ce paramètre est spécifié, le paramètre fetchType doit également être explicitement défini.

offset

Spécifie la ligne à accéder si le paramètre row est défini à SQLSRV_SCROLL_ABSOLUTE ou SQLSRV_SCROLL_RELATIVE. Notez que la première ligne du jeu de résultats a comme index 0.

Valeurs de retour

Retourne un tableau en cas de succès, null s'il n'y a plus de ligne à retourner, et false si une erreur survient.

Exemples

Exemple #1 Récupération d'un tableau associatif

<?php
$serverName
= "serverName\instanceName";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if(
$conn === false ) {
die(
print_r( sqlsrv_errors(), true));
}

$sql = "SELECT FirstName, LastName FROM SomeTable";
$stmt = sqlsrv_query( $conn, $sql );
if(
$stmt === false) {
die(
print_r( sqlsrv_errors(), true) );
}

while(
$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
echo
$row['LastName'].", ".$row['FirstName']."<br />";
}

sqlsrv_free_stmt( $stmt);
?>

Exemple #2 Récupération d'un tableau numérique

<?php
$serverName
= "serverName\instanceName";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if(
$conn === false ) {
die(
print_r( sqlsrv_errors(), true));
}

$sql = "SELECT FirstName, LastName FROM SomeTable";
$stmt = sqlsrv_query( $conn, $sql );
if(
$stmt === false) {
die(
print_r( sqlsrv_errors(), true) );
}

while(
$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) {
echo
$row[0].", ".$row[1]."<br />";
}

sqlsrv_free_stmt( $stmt);
?>

Notes

Le fait de ne pas spécifier le paramètre fetchType ou le fait de le définir explicitement à la valeur SQLSRV_FETCH_TYPE dans l'exemple ci-dessus retournera un tableau contenant à la fois des clés associatives et des clés numériques.

Si plus d'une colonne est retourné avec le même nom, la dernière colonne prendra le dessus. Pour éviter d'avoir des problèmes avec les noms des colonnes, utilisez des alias.

Si une colonne ne possédant aucun nom est retournée, la clé associative de l'élément du tableau sera une chaîne vide ("").

Voir aussi

  • sqlsrv_connect() - Ouvre une connexion sur une base de données Microsoft SQL Server
  • sqlsrv_query() - Prépare et exécute une requête
  • sqlsrv_errors() - Retourne une erreur ainsi que certaines informations sur la dernière opération SQLSRV effectuée
  • sqlsrv_fetch() - Rend la prochaine ligne d'un jeu de résultats disponible pour lecture

add a note add a note

User Contributed Notes 3 notes

up
7
albornozg dot rene at gmail dot com
5 years ago
Example with an iteration ( SQLSRV_SCROLL_ABSOLUTE ).

for ($i=0; $i < sqlsrv_num_rows($stmt); $i++) {

     $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC,   SQLSRV_SCROLL_ABSOLUTE   ,  $i  );
     echo "value of column 1: '.trim($row[0]).', value of column 2: '.trim($row[1]);

}
up
-5
dlyasaitov184 at yandex dot ru
6 years ago
When I try to  use SQLSRV_FETCH_BOTH for SQL-statement   about "select ... from [viewName]" result set contained superfluous fields( duplicates and other fields from joined tables).  Other types of fetchType work correctly.
up
-19
Anonymous
9 years ago
Note that while the docs say to avoid SQLSRV_FETCH_ASSOC when dealing with result sets where multiple fields have the same name, there are cases when this is perfectly valid to do.

Consider the following query:

SELECT * FROM a INNER JOIN b ON a.id = b.id

For any row, if you fetch NUMERIC you'll get a field for both a.id and b.id, which probably isn't very useful.

If you fetch ASSOC, you'll get one field for "id", and given that it's always the same in both tables (because your query insists it is so), you're not at risk of losing anything.

If you're generating output based on an unknown number of fields, the ASSOC behavior might be preferred.
To Top