Position actuelle: Accueil> Derniers articles> La différence et l'application de mysql_fetch_array et mysql_fetch_row

La différence et l'application de mysql_fetch_array et mysql_fetch_row

gitbox 2025-06-03

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.


1. Fonction Introduction

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

2. Différences principales

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

3. Analyse du scénario d'application

mysql_fetch_array

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>";
}

mysql_fetch_row

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>";
}

4. Résumé

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

5. Résumé de l'exemple de 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&#39;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>";
}

6. Choses à noter

  • La série de fonctions MySQL_ * a été obsolète et il est recommandé d'utiliser à la place une extension MySQLI ou PDO .

  • Ces fonctions obsolètes doivent être évitées dans de nouveaux projets pour assurer la sécurité et la maintenabilité du code.