Lors du développement d'applications à l'aide de PHP et MySQL, nous utilisons souvent MySQLI pour effectuer des requêtes de base de données. Après l'exécution de l'instruction SELECT , MySQLI_Query () renvoie un objet MySQLI_RESULT , mais cet objet n'est pas un format de tableau directement disponible. Afin de traiter les données plus facilement, nous devons généralement convertir complètement les résultats de la requête en un tableau bidimensionnel.
Ce qui suit est une méthode d'implémentation spécifique.
Nous pouvons utiliser mysqli_fetch_all () pour obtenir toutes les lignes à la fois, mais sachez que cette fonction nécessite au moins PHP 5.3 et plus. Si vous souhaitez être compatible avec les versions antérieures, vous pouvez utiliser MySQLI_Fetch_assoc () en combinaison avec des boucles.
Voici un exemple d'utilisation de mysqli_fetch_all () :
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
// Vérifiez la connexion
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
$sql = "SELECT * FROM your_table";
$result = $mysqli->query($sql);
if ($result) {
// MYSQLI_ASSOC Indique que le tableau associatif est retourné
$data = $result->fetch_all(MYSQLI_ASSOC);
print_r($data);
} else {
echo "La requête a échoué: " . $mysqli->error;
}
$mysqli->close();
?>
Si vous devez être compatible avec les versions antérieures de PHP, il est recommandé d'utiliser une boucle while :
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
$sql = "SELECT * FROM your_table";
$result = $mysqli->query($sql);
$data = [];
if ($result) {
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
print_r($data);
} else {
echo "La requête a échoué: " . $mysqli->error;
}
$mysqli->close();
?>
Pour une meilleure réutilisation, vous pouvez également le résumer en une fonction:
<?php
function fetchAllResults($mysqli, $query) {
$result = $mysqli->query($query);
$data = [];
if ($result) {
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
}
return $data;
}
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
$sql = "SELECT * FROM your_table";
$data = fetchAllResults($mysqli, $sql);
print_r($data);
$mysqli->close();
?>
Sécurité : N'oubliez pas d'utiliser des instructions de prétraitement ( préparez ) pour les données d'entrée en externe afin d'éviter l'injection SQL.
Performances : éliminer une grande quantité de données peut prendre beaucoup de mémoire. Si le volume de données est important, il est recommandé de paginer des requêtes.
Gestion des erreurs : vérifiez toujours si $ le résultat est faux pour éviter de continuer à exécuter le code ultérieur lorsque la requête échoue.
Supposons que l'interface que vous souhaitez utiliser est: