PHP 8.4.3 Released!

mysql_fetch_array

(PHP 4, PHP 5)

mysql_fetch_array Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux

Avertissement

Cette extension était obsolète en PHP 5.5.0, et a été supprimée en PHP 7.0.0. À la place, vous pouvez utiliser l'extension MySQLi ou l'extension PDO_MySQL. Voir aussi MySQL : choisir une API du guide. Alternatives à cette fonction :

Description

mysql_fetch_array(resource $result, int $result_type = MYSQL_BOTH): array

mysql_fetch_array() retourne un tableau qui contient la ligne demandée dans le résultat result et déplace le pointeur de données interne d'un cran.

Liste de paramètres

result

La resource de résultat qui vient d'être évaluée. Ce résultat vient de l'appel à la fonction mysql_query().

result_type

Le type de tableau à récupérer. C'est une constante qui peut prendre les valeurs suivantes : MYSQL_ASSOC, MYSQL_NUM, et MYSQL_BOTH.

Valeurs de retour

Retourne un tableau de chaînes qui correspond à la ligne récupérée ou false s'il n'y a plus de lignes. Le type de tableau retourné dépend de la définition du paramètre result_type. En utilisant MYSQL_BOTH (défaut), vous récupérerez un tableau contenant des indices associatifs et numériques. En utilisant MYSQL_ASSOC, vous ne récupérerez que les indices associatifs (comme le fonctionnement de la fonction mysql_fetch_assoc()), en utilisant MYSQL_NUM, vous ne récupérerez que les indices numériques (comme le fonctionnement de la fonctionmysql_fetch_row()).

Si plusieurs colonnes portent le même nom, la dernière colonne aura la priorité. Pour accéder aux autres colonnes du même nom, vous devez utiliser l'index numérique, ou faire un alias pour chaque colonne. Pour les alias de colonnes, vous ne pourrez pas accéder aux contenus avec les noms originaux des colonnes.

Exemples

Exemple #1 Requête avec duplication de nom de colonnes

SELECT table1.field AS foo, table2.field AS bar FROM table1, table2

Exemple #2 mysql_fetch_array() avec MYSQL_NUM

<?php
mysql_connect
("localhost", "mysql_user", "mysql_password") or
die(
"Impossible de se connecter : " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while (
$row = mysql_fetch_array($result, MYSQL_NUM)) {
printf("ID : %s Nom : %s", $row[0], $row[1]);
}

mysql_free_result($result);
?>

Exemple #3 mysql_fetch_array() avec MYSQL_ASSOC

<?php
mysql_connect
("localhost", "mysql_user", "mysql_password") or
die(
"Impossible de se connecter : " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while (
$row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf("ID : %s Nom : %s", $row["id"], $row["name"]);
}

mysql_free_result($result);
?>

Exemple #4 mysql_fetch_array() avec MYSQL_BOTH

<?php
mysql_connect
("localhost", "mysql_user", "mysql_password") or
die(
"Impossible de se connecter : " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while (
$row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf ("ID : %s Nom : %s", $row[0], $row["name"]);
}

mysql_free_result($result);
?>

Notes

Note: Performance

Une chose importante à noter est que l'utilisation de mysql_fetch_array() n'est pas significativement plus lent que l'utilisation de mysql_fetch_row(), alors qu'il fournit des valeurs significatives ajoutées.

Note: Les noms des champs retournés par cette fonction sont sensibles à la casse.

Note: Cette fonction définit les champs NULL à la valeur PHP null.

Voir aussi

add a note

User Contributed Notes 2 notes

up
17
robjohnson at black-hole dot com
22 years ago
Benchmark on a table with 38567 rows:

mysql_fetch_array
MYSQL_BOTH: 6.01940000057 secs
MYSQL_NUM: 3.22173595428 secs
MYSQL_ASSOC: 3.92950594425 secs

mysql_fetch_row: 2.35096800327 secs
mysql_fetch_assoc: 2.92349803448 secs

As you can see, it's twice as effecient to fetch either an array or a hash, rather than getting both. it's even faster to use fetch_row rather than passing fetch_array MYSQL_NUM, or fetch_assoc rather than fetch_array MYSQL_ASSOC. Don't fetch BOTH unless you really need them, and most of the time you don't.
up
8
KingIsulgard
16 years ago
I have found a way to put all results from the select query in an array in one line.

// Read records
$result = mysql_query("SELECT * FROM table;") or die(mysql_error());

// Put them in array
for($i = 0; $array[$i] = mysql_fetch_assoc($result); $i++) ;

// Delete last empty one
array_pop($array);

You need to delete the last one because this will always be empty.

By this you can easily read the entire table to an array and preserve the keys of the table columns. Very handy.
To Top