Après avoir exécuté des requêtes de base de données à l'aide de MySQLI dans PHP, nous voulons généralement obtenir tous les résultats de requête efficacement et commodément. Dans l'usage mysqli orienté objet, MySQLI_RESULT :: fetch_all est un moyen très concis d'obtenir tous les résultats à la fois et de les retourner sous forme de tableau. Cet article présentera en détail comment utiliser la méthode fetch_all et analyser ses scénarios d'utilisation et ses précautions.
mysqli_result :: fetch_all est une méthode de la classe mysqli_result qui est utilisée pour récupérer toutes les lignes dans l'ensemble de résultats de requête en même temps. Il renvoie un tableau bidimensionnel, chaque ligne représente un enregistrement dans le résultat de la requête.
La syntaxe est la suivante:
<span><span><span class="hljs-keyword">array</span></span><span> mysqli_result::</span><span><span class="hljs-title function_ invoke__">fetch_all</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$mode</span></span><span> = MYSQLI_NUM)
</span></span>
Le paramètre Mode $ est utilisé pour définir le format du tableau de retour. Les couramment utilisés sont:
Mysqli_num : renvoie un tableau d'index numérique.
Mysqli_assoc : renvoie le tableau d'index associatif (nom de champ en tant que clé).
Mysqli_both : renvoie à la fois le nombre et l'index associé.
Ci-dessous, nous montrons l'utilisation de fetch_all via un exemple complet.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Configuration de la connexion de la base de données</span></span><span>
</span><span><span class="hljs-variable">$host</span></span><span> = </span><span><span class="hljs-string">"localhost"</span></span><span>;
</span><span><span class="hljs-variable">$user</span></span><span> = </span><span><span class="hljs-string">"root"</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$database</span></span><span> = </span><span><span class="hljs-string">"test_db"</span></span><span>;
</span><span><span class="hljs-comment">// Créer une connexion</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-variable">$host</span></span><span>, </span><span><span class="hljs-variable">$user</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$database</span></span><span>);
</span><span><span class="hljs-comment">// Vérifiez si la connexion réussit</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Échec de la connexion: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// Déclaration de requête</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT id, name, email FROM users"</span></span><span>;
</span><span><span class="hljs-comment">// Exécuter une requête</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);
</span><span><span class="hljs-comment">// Vérifiez si la requête est réussie</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"La requête a échoué: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error);
}
</span><span><span class="hljs-comment">// utiliser fetch_all Obtenez tous les résultats(Méthode de tableau associatif)</span></span><span>
</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_all</span></span><span>(MYSQLI_ASSOC);
</span><span><span class="hljs-comment">// Résultat de sortie</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$data</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ID: "</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-string">"<br>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Name: "</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-string">"<br>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Email: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'email'</span></span><span>] . </span><span><span class="hljs-string">"<br><br>"</span></span><span>;
}
</span><span><span class="hljs-comment">// Libérez l'ensemble de résultats</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">free</span></span><span>();
</span><span><span class="hljs-comment">// Fermer la connexion</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Concise : par rapport à la méthode d'écriture traditionnelle de WHI ($ row = $ result-> fetch_assoc ()) , il y a moins de code et plus clair.
Efficacité : Chargez toutes les données dans la mémoire à la fois, adaptées au traitement des ensembles de données de petite à moyenne taille.
Flexibilité : prend en charge plusieurs formats de tableau (indice numérique, index associé, ou les deux).
Utilisez la prudence lorsque le volume de données est grand : car Fetch_all chargera toutes les données dans la mémoire à la fois, et le débordement de la mémoire peut se produire lorsque le volume de données est trop grand.
Exigences du pilote natif MySQL (MySQLND) : La méthode fetch_all nécessite MySQLND (pilote natif MySQL). Dans certaines anciennes configurations PHP, si MySQLND n'est pas activé, cette méthode peut être indisponible.
Gestion des erreurs : il est recommandé de toujours vérifier si le résultat de la requête est faux afin que les erreurs d'exécution SQL puissent être capturées à temps.
Avec MySQLI_RESULT :: fetch_all , les développeurs PHP peuvent obtenir des résultats de requête complets de la base de données plus efficacement. Bien que cette méthode soit simple et pratique, il est toujours nécessaire de faire des choix raisonnables en fonction du volume réel de données et des ressources système pendant l'utilisation. La maîtrise de ses scénarios d'utilisation contribuera à améliorer l'efficacité de votre fonctionnement de base de données et de la lisibilité du code.