Position actuelle: Accueil> Derniers articles> Comment obtenir correctement les données à partir de plusieurs lignes et colonnes à l'aide de mysqli_result :: fetch_column? Meilleurs pratiques Partage

Comment obtenir correctement les données à partir de plusieurs lignes et colonnes à l'aide de mysqli_result :: fetch_column? Meilleurs pratiques Partage

gitbox 2025-06-17

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.

1. Introduction à mysqli_result :: fetch_column

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.

Signature de la méthode

 <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 .

2. Utilisation de base

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>-&gt;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>-&gt;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>-&gt;</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>-&gt;</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">"&lt;br&gt;"</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>-&gt;</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 .

3. Scénarios applicables

Scénario 1: Extraire les données de colonne unique pour le traitement ultérieur

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 .

Scénario 2: Optimiser les performances

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.

4. meilleures pratiques

4.1 Utilisation de déclarations préparées

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>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT name FROM users WHERE age &gt; ?"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</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>-&gt;</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>-&gt;</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>-&gt;</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">"&lt;br&gt;"</span></span><span>;
}

</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>

4.2 Gestion des erreurs

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>-&gt;error);
}
</span></span>

4.3 Ressources de libération

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>-&gt;</span><span><span class="hljs-title function_ invoke__">free</span></span><span>();
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>

5. Résumé

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.