Lorsque vous utilisez PHP pour les opérations de base de données, l'extension MySQLI offre des fonctions très pratiques pour connecter, interroger et utiliser des bases de données. MySQLI_RESULT est l'objet SET de résultat renvoyé lorsque la requête est exécutée. Cet article présentera comment traverser correctement tous les résultats renvoyés par la fonction mysqli_result afin que les résultats de requête puissent être obtenus et traités efficacement.
Tout d'abord, nous devons nous connecter à la base de données via la fonction mysqli_connect () . Supposons ici que vous avez déjà une expérience de base de base de la base de données MySQL, ce qui suit est un exemple de connexion de base de données simple:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// Créer une connexion
$conn = new mysqli($servername, $username, $password, $dbname);
// Vérifiez la connexion
if ($conn->connect_error) {
die("Échec de la connexion: " . $conn->connect_error);
}
?>
Après avoir connecté à la base de données, nous pouvons exécuter des requêtes SQL via mysqli_query () . Supposons que nous interrogeons un tableau nommé utilisateurs et obtenons des informations sur tous les utilisateurs:
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);
À ce stade, $ résultat sera un objet mysqli_result contenant toutes les données de la requête.
La façon la plus courante de traverser l'ensemble de résultats renvoyée par MySQLI_RESULT est d'utiliser la fonction MySQLI_Fetch_assoc () . La fonction renvoie un tableau associatif, et chaque fois qu'il est appelé, il renvoie une ligne de données et déplace le pointeur vers la ligne suivante jusqu'à ce qu'il n'y ait plus de données.
if ($result->num_rows > 0) {
// Données de sortie pour chaque ligne
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
}
} else {
echo "0 résultat";
}
Dans cet exemple, mysqli_fetch_assoc () renvoie un tableau associatif où la clé du tableau est le nom de champ et la valeur est la valeur du champ correspondant.
En plus de mysqli_fetch_assoc () , vous pouvez également utiliser mysqli_fetch_row () pour renvoyer un tableau d'index, et les valeurs de champ de chaque ligne de données seront stockées dans le tableau dans l'ordre. Lorsque vous utilisez cette méthode, vous devez accéder aux valeurs de chaque champ via l'index.
if ($result->num_rows > 0) {
// Données de sortie pour chaque ligne
while($row = $result->fetch_row()) {
echo "id: " . $row[0] . " - Name: " . $row[1] . " - Email: " . $row[2] . "<br>";
}
} else {
echo "0 résultat";
}
Ici, mysqli_fetch_row () renvoie un tableau d'index numérique, $ row [0] correspond au champ ID , $ row [1] est nom , et $ row [2] est e-mail .
Si vous êtes plus habitué à la façon dont les objets sont utilisés pour traiter les résultats de la requête, vous pouvez utiliser mysqli_fetch_object () . Il renvoie un objet et chaque champ est accessible via les propriétés de l'objet.
if ($result->num_rows > 0) {
// Données de sortie pour chaque ligne
while($row = $result->fetch_object()) {
echo "id: " . $row->id . " - Name: " . $row->name . " - Email: " . $row->email . "<br>";
}
} else {
echo "0 résultat";
}
Si vous avez besoin de manipuler les données sur toutes les lignes de manière plus flexible pendant le traitement, vous pouvez utiliser la fonction MySQLI_Fetch_all () , qui renvoie un tableau bidimensionnel contenant tous les résultats.
$allResults = $result->fetch_all(MYSQLI_ASSOC);
foreach ($allResults as $row) {
echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
}
Ici, fetch_all (mysqli_assoc) renverra tous les résultats en tant que tableau associatif.
Une fois l'opération terminée, n'oubliez pas de fermer la connexion de la base de données:
$conn->close();
Grâce aux méthodes ci-dessus, nous pouvons parcourir tous les résultats renvoyés par la fonction mysqli_result . La méthode à utiliser dépend de vos besoins individuels et de la façon dont les données sont traitées. Si vous souhaitez obtenir des champs en associant des tableaux, vous pouvez utiliser mysqli_fetch_assoc () ; Si vous préférez orienté objet, vous pouvez choisir mysqli_fetch_object () ; Si vous devez traiter toutes les lignes de données en même temps, vous pouvez utiliser MySQLI_Fetch_all () .
N'oubliez pas qu'après l'opération de connexion de la base de données, fermez la connexion à temps pour assurer la libération des ressources.