: Renvoie toutes les données de champ de la ligne actuelle, et le résultat est un tableau d'index numérique, où chaque valeur est le contenu d'une colonne. L'indice du tableau commence à 0, représentant l'index de colonne dans l'ensemble de résultats de requête.
mysql_fetch_assoc () : renvoie toutes les données de champ de la ligne actuelle, et le résultat est un tableau associatif, où la clé du tableau est le nom de la colonne et la valeur est le contenu de la colonne. Contrairement à mysql_fetch_row () , mysql_fetch_assoc () utilise des noms de colonne au lieu d'index numériques pour identifier les champs.
mysql_fetch_row () Exemple :
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_query</span></span><span>(</span><span><span class="hljs-string">"SELECT id, name, age FROM users"</span></span><span>);
</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_fetch_row</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; </span><span><span class="hljs-comment">// Sortir id</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>]; </span><span><span class="hljs-comment">// Sortir name</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-number">2</span></span><span>]; </span><span><span class="hljs-comment">// Sortir age</span></span><span>
</span></span>
Dans cet exemple, mysql_fetch_row () renvoie un tableau d'index numériques, et l'indice du tableau est l'index de la colonne (0, 1, 2 ...). Lorsque nous voulons accéder à une colonne de données, nous y accédons via l'index de la colonne.
mysql_fetch_assoc () Exemple :
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_query</span></span><span>(</span><span><span class="hljs-string">"SELECT id, name, age FROM users"</span></span><span>);
</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_fetch_assoc</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>]; </span><span><span class="hljs-comment">// Sortir id</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>]; </span><span><span class="hljs-comment">// Sortir name</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'age'</span></span><span>]; </span><span><span class="hljs-comment">// Sortir age</span></span><span>
</span></span>
Contrairement à mysql_fetch_row () , mysql_fetch_assoc () renvoie un tableau associatif et les clés du tableau sont des noms de colonne. Nous pouvons accéder aux données via des noms de colonne, ce qui rend le code plus facile à comprendre et à maintenir.
Du point de vue des performances, mysql_fetch_row () est légèrement meilleur que mysql_fetch_assoc () . Parce qu'il renvoie un tableau d'index numérique, MySQL_FETCH_ASSOC () doit gérer le mappage de chaîne des noms de colonnes, ajoutant un peu de surcharge supplémentaire. Par conséquent, sous des exigences de performances extrêmes, MySQL_Fetch_Row () peut être plus approprié.
Cependant, les différences de performance sont insignifiantes dans la plupart des cas, en particulier dans la plupart des applications où les différences peuvent ne pas être remarquées.
Bien que mysql_fetch_row () présente un léger avantage des performances, mysql_fetch_assoc () offre une meilleure lisibilité du code. En utilisant des noms de colonne au lieu des index numériques, les erreurs d'accès peuvent être évitées et le code est plus maintenable.
Par exemple, lorsque la colonne de résultat de requête change (telle que le réglage de la commande de colonne), l'utilisation de mysql_fetch_assoc () apparaîtra plus robuste car les noms de colonne ne seront pas affectés par les modifications de la commande de colonne. Si mysql_fetch_row () s'appuie sur des index numériques, il peut augmenter les erreurs inutiles.
Scénarios utilisant mysql_fetch_row () :
Il a des exigences de performance extrêmement élevées et le nombre de colonnes dans les résultats de la requête est très important, donc lorsque vous souhaitez minimiser les frais généraux de mémoire.
Lorsque le nombre de colonnes dans la requête est fixe et pas facile à modifier, et que le développeur de code a une compréhension claire de l'index de colonne.
Scénarios utilisant mysql_fetch_assoc () :
Lorsque vous souhaitez que le code soit plus facile à lire et à entretenir, surtout lorsque l'ordre de colonne peut changer.
Vous devez utiliser les noms de colonnes pour accéder aux données pour éviter les erreurs causées par les modifications de l'ordre ou de la position des colonnes.
Lorsqu'il y a moins de colonnes dans l'ensemble de résultats de requête et que la différence de performance n'est pas évidente.
mysql_fetch_row () et mysql_fetch_assoc () sont tous deux utilisés pour extraire une ligne de données dans le jeu de résultats de la requête MySQL, mais ils varient en format, performances et lisibilité du retour. Lors du choix de celui à utiliser, vous devez décider en fonction du scénario d'application spécifique:
Si les performances sont préférées et que la structure des données est relativement simple, l'utilisation de mysql_fetch_row () est un choix approprié.
Si vous faites plus attention à la lisibilité et à la maintenabilité de votre code, en particulier lorsque plusieurs colonnes sont impliquées et que les noms de colonnes peuvent changer, il est plus pratique d'utiliser MySQL_Fetch_assoc () .
Dans le développement de PHP moderne, il est recommandé d'utiliser MySQLI ou PDO au lieu d'extensions MySQL car les extensions MySQL ont été obsolètes. Peu importe quelle extension est utilisée, la compréhension de la différence entre ces deux fonctions peut nous aider à effectuer des opérations de base de données plus efficacement.