Lors de la connexion aux bases de données MySQL à l'aide de PHP, il existe de nombreuses façons d'obtenir des résultats de requête. Mysql_fetch_array et mysql_fetch_row sont deux fonctions couramment utilisées. Ils peuvent tous obtenir une ligne de données à partir des résultats de la requête, mais la structure de données renvoyée et les scénarios applicables sont différents. Cet article expliquera en détail les différences entre ces deux fonctions et leurs scénarios d'application respectifs.
mysql_fetch_array ()
Cette fonction tire une ligne de l'ensemble de résultats en tant que tableau associatif, un tableau d'index numérique ou un tableau qui a les deux. Son comportement par défaut consiste à renvoyer un tableau contenant des index numériques et des index associés.
Exemple de syntaxe:
$row = mysql_fetch_array($result, MYSQL_BOTH);
Le deuxième paramètre peut être:
MySQL_ASSOC : Return uniquement le tableau associatif
Mysql_num : renvoyez uniquement le tableau d'index numérique
Mysql_both (par défaut): renvoie les tableaux d'index associatifs et numériques
mysql_fetch_row ()
Cette fonction prend une ligne de l'ensemble de résultats et le renvoie comme un tableau d'index numérique. C'est-à-dire que le résultat ne peut être accessible que via un index numérique et ne peut pas être accessible par un nom de champ.
Exemple de syntaxe:
$row = mysql_fetch_row($result);
caractéristiques | mysql_fetch_array | mysql_fetch_row |
---|---|---|
Type de valeur de retour | Tableaux qui renvoient l'index numérique + index associé par défaut (facultatif) | Renvoie le tableau d'index numérique |
Méthodes d'accès | Noms de champ accessibles ou index numériques | Uniquement accessible avec les index numériques |
Consommation de mémoire | Plus grand (car le tableau de retour contient deux index) | Plus petit |
flexibilité | Élevé, adapté aux scénarios où les index numériques et les index associés sont requis en même temps | Bas, adapté uniquement à l'accès à l'index numérique |
Convient aux scénarios où un accès flexible aux champs est requis, par exemple:
Les données doivent être accessibles via le nom du champ, et le code est plus lisible
Il est nécessaire de prendre en charge l'indice d'index numérique et le nom de champ, qui a une meilleure compatibilité
La quantité de données est lue est petite et les exigences d'utilisation de la mémoire ne sont pas élevées
Exemple:
$result = mysql_query("SELECT id, name FROM users");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "User ID: " . $row['id'] . ", Name: " . $row['name'] . "<br>";
}
Convient aux scénarios où les exigences de mémoire sont strictement requises et uniquement accédés par les index numériques, tels que:
Lire les mégadonnées par lots pour enregistrer l'espace mémoire
Traiter les données de champ dans l'ordre, pas besoin d'accéder au nom du champ
Traitement des données simples avec des exigences de performance élevées
Exemple:
$result = mysql_query("SELECT id, name FROM users");
while ($row = mysql_fetch_row($result)) {
echo "User ID: " . $row[0] . ", Name: " . $row[1] . "<br>";
}
fonction | avantage | défaut |
---|---|---|
mysql_fetch_array | Accès flexible, bonne lisibilité au code | Prend plus de mémoire |
mysql_fetch_row | Utilisation de la mémoire basse, meilleure performance | Accédé uniquement par les index numériques, mauvaise lisibilité au code |
// utiliser mysql_fetch_array Obtenez le tableau associatif
$result = mysql_query("SELECT id, username FROM users");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "ID: " . $row['id'] . ", Username: " . $row['username'] . "<br>";
}
// utiliser mysql_fetch_row Obtenez le tableau d'index numérique
$result = mysql_query("SELECT id, username FROM users");
while ($row = mysql_fetch_row($result)) {
echo "ID: " . $row[0] . ", Username: " . $row[1] . "<br>";
}