Lorsque vous utilisez la base de données MySQL, nous devons souvent extraire les données d'une colonne des données des résultats de la requête. L'extension MySQLI fournit plusieurs façons de parcourir les résultats de la requête. MySQLI_RESULT :: fetch_column est l'une des fonctions très pratiques qui peuvent nous aider à extraire toutes les données d'une colonne spécifique. Dans cet article, nous explorerons comment utiliser correctement Fetch_Column pour obtenir des données à partir de plusieurs lignes et colonnes, et fournir les meilleures pratiques pour optimiser le code.
mysqli_result :: fetch_column est une méthode de la classe mysqli_result qui obtient des données pour une colonne spécifique à partir des résultats de la requête. Contrairement aux méthodes comme Fetch_assoc ou fetch_row , Fetch_Column ne renvoie que des données pour une seule colonne, et il récupère toutes les lignes à la fois au lieu de la ligne par ligne.
<span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli_fetch_column</span></span><span>(mysqli_result </span><span><span class="hljs-variable">$result</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$column</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>;
</span></span>
$ Résultat : l'objet Set Result Set, renvoyé par mysqli_query () ou d'autres fonctions similaires.
$ colonne : spécifie l'index de la colonne à récupérer, la valeur par défaut est 0 , c'est-à-dire la première colonne.
Cette méthode renvoie un tableau contenant des données de la colonne spécifiée, et s'il n'y a pas de données ou d'erreur se produit, renvoie false .
Supposons que nous ayons un tableau nommé utilisateurs avec ID , nom et e-mail des champs, nous voulons extraire les champs de noms pour tous les utilisateurs.
<span><span><span class="hljs-comment">// Connexion de base de données</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-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"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">// Exécuter une requête</span></span><span>
</span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">"SELECT name FROM users"</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">$query</span></span><span>);
</span><span><span class="hljs-comment">// utiliser fetch_column Faire tout name Données sur le terrain</span></span><span>
</span><span><span class="hljs-variable">$names</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_column</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-comment">// Résultat de sortie</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$names</span></span><span>) {
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$names</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span> . </span><span><span class="hljs-string">"<br>"</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Pas de données。"</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>
Dans le code ci-dessus, Fetch_Column (0) prend toutes les données de la colonne de nom dans le résultat de la requête et le renvoie sous forme de tableau. Nous parcourons ensuite ForEach et sortions chaque nom .
Si vous n'avez besoin que d'une colonne de données pour le traitement ultérieur (comme la génération de boîtes de sélection ou les données de renoncement dynamiquement), Fetch_Column est un choix très efficace. Il évite la nécessité de traiter les données de colonne inutiles lors de l'utilisation de fetch_assoc ou de fetch_row .
Lors du traitement de grandes quantités de données, Fetch_Column peut réduire considérablement la consommation de mémoire par rapport à d'autres méthodes, car elle n'obtient que les données de colonne dont vous avez besoin, pas les données de toute la ligne. Pour les scénarios avec des exigences de performance élevées, cette méthode peut optimiser efficacement les performances de la requête.
Bien que Fetch_Column soit pratique et rapide, en développement réel, l'utilisation de requêtes SQL brutes peut avoir le risque d'injection SQL. Par conséquent, la meilleure pratique consiste à toujours utiliser des déclarations préparées pour assurer la sécurité.
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT name FROM users WHERE age > ?"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"i"</span></span><span>, </span><span><span class="hljs-variable">$age</span></span><span>);
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">18</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">get_result</span></span><span>();
</span><span><span class="hljs-variable">$names</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_column</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>);
</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">$names</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span> . </span><span><span class="hljs-string">"<br>"</span></span><span>;
}
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>
La gestion des erreurs est cruciale dans les opérations de base de données. Assurez-vous de vérifier si la requête est réussie et de gérer les erreurs possibles. mysqli_error () et mysqli_errno () peuvent vous aider à obtenir des informations d'erreur spécifiques pour le dépannage.
<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-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>
Après avoir traité les résultats de la requête, assurez-vous d'appeler mysqli_free_result () ou fermer la connexion de la base de données pour libérer la ressource. Bien que ces ressources soient automatiquement publiées à la fin du script, la libération explicite de ressources est une meilleure pratique.
<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-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>
L'utilisation de mysqli_result :: fetch_column pour obtenir des données à partir de plusieurs lignes et colonnes est un moyen simple et efficace de simplifier considérablement le code et d'améliorer les performances. Spécifiez simplement l'indice de colonne et vous pouvez obtenir directement toutes les données, en évitant la traversée de boucle inutile. De plus, l'utilisation des instructions préparées et des mécanismes de gestion des erreurs peut améliorer la sécurité et la robustesse du programme.
J'espère que grâce à l'introduction de cet article, cela peut vous aider à mieux comprendre et utiliser Fetch_Column et améliorer votre efficacité de développement et votre qualité de code.
Étiquettes associées:
mysqli_result