Lorsque vous utilisez PHP pour les opérations de base de données, l'extension MySQLI fournit plusieurs façons d'obtenir des résultats de requête. Parmi eux, MySQLI_RESULT :: Fetch_Column et MySqli_Fetch_Array sont deux fonctions couramment utilisées mais différentes. Il est très important de comprendre leurs différences et leurs scénarios applicables pour écrire un code efficace et facile à maintenir.
mysqli_result :: fetch_column
Il s'agit d'une nouvelle méthode ajoutée à la version PHP 8.1, qui appartient à la classe MySQLI_RESULT de style orienté objet. Il est utilisé pour obtenir la valeur de la colonne spécifiée à partir de l'ensemble de résultats et renvoyer les données d'un seul champ.
mysqli_fetch_array
Il s'agit d'une fonction orientée procédure qui renvoie toutes les données de champ de la ligne actuelle. Il renvoie un tableau, soit un tableau associatif, un tableau d'index numérique, ou même les deux, selon les paramètres des paramètres.
caractéristiques | mysqli_result :: fetch_column | mysqli_fetch_array |
---|---|---|
Valeur de retour | Renvoie la valeur de champ unique de la colonne spécifiée | Renvoie le tableau de la ligne actuelle (association, index numérique, ou les deux) |
Utiliser le style | Orienté objet | Orienté vers le processus |
Type de retour | Valeurs scalaires (chaînes, nombres, etc.) | Tableau |
Scénarios applicables | Juste une certaine colonne de données enregistre la mémoire | Nécessite une ligne entière de données, y compris plusieurs colonnes |
Exigences de version PHP | PHP 8.1 et plus | Prise en charge des versions antérieures de PHP |
<?php
$mysqli = new mysqli("gitbox.net", "user", "password", "database");
$result = $mysqli->query("SELECT id, name FROM users");
while ($id = $result->fetch_column(0)) { // Obtenez la première colonne id
echo "utilisateurID: $id\n";
}
$mysqli->close();
?>
<?php
$mysqli = new mysqli("gitbox.net", "user", "password", "database");
$result = $mysqli->query("SELECT id, name FROM users");
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
echo "utilisateurID: " . $row['id'] . ", utilisateur名: " . $row['name'] . "\n";
}
$mysqli->close();
?>
Si vous ne vous souciez qu'une seule colonne dans le résultat de la requête et utilisez PHP 8.1 et supérieur, Fetch_Column est un choix plus concis et efficace.
Il renvoie directement les données de la colonne spécifiée, en évitant la surcharge inutile du tableau et en rendant le code plus concis.
Si vous devez accéder à plusieurs champs dans toute la ligne, ou si votre projet utilise toujours PHP 8.0 et ci-dessous, l'utilisation de MySQLI_Fetch_Array est plus appropriée.
Il prend en charge plus de types de retour et offre un accès flexible aux champs.
Orienté objet vs orienté vers le processus <br> Si vous êtes utilisé pour une programmation orientée objet, il est recommandé d'utiliser $ result-> fetch_column () et d'autres méthodes orientées objet de mysqli_result .
Sinon, MySqli_Fetch_Array () est toujours une fonction procédurale classique et largement utilisée.
Scène | Fonctions recommandées |
---|---|
Obtenez uniquement un seul champ (colonne unique) | mysqli_result :: fetch_column |
Obtenez un enregistrement complet de plusieurs champs | mysqli_fetch_array ou $ result-> fetch_assoc () |
Compatible avec PHP 8,0 et ci-dessous | mysqli_fetch_array |
Lors de la sélection d'une fonction, vous devez prendre des décisions en fonction des besoins de l'entreprise et de la version PHP. Comprendre la différence entre les deux peut aider à écrire le code d'accès à la base de données plus concise et plus efficace.