oujood.com

Comment stocker le résultat d'une requête SQL en PHP

Dans ce tutoriel, vous apprendrez à utiliser la fonction store_result() (ou mysqli_store_result()) en PHP pour stocker le résultat d'une requête SQL dans un objet mysqli_result.

La fonction store_result() / mysqli_store_result() en PHP :Introduction

PHP Version: 5+

La fonction store_result() (ou mysqli_store_result()) est utilisée en PHP pour stocker le résultat d'une requête SQL dans un objet mysqli_result. Cela permet de travailler avec les données de la requête de manière plus efficace, car elles ne sont plus chargées en mémoire que lorsqu'elles sont nécessaires.

Définition et utilisation

La fonction store_result() a la syntaxe suivante :

mysqli_store_result($link);

$link est un identifiant de connexion à la base de données.

La fonction renvoie un objet mysqli_result ou false en cas d'erreur.

Syntaxes orientée objet et procédurale

La fonction store_result() est disponible en deux syntaxes :

  • Syntaxe orientée objet :
    $result = $mysqli->store_result();
  • Syntaxe procédurale :
    $result = mysqli_store_result($mysqli);

Valeurs possibles et paramètres

La fonction store_result() ne prend aucun paramètre.

Exemples pratiques

Exemple orienté objet

Exemple :       Copier le code

<?php

// Connexion à la base de données
$mysqli = new mysqli('localhost', 'root', '', 'my_database');

// Exécution d'une requête
$mysqli->query('SELECT * FROM users');

// Stockage du résultat
$result = $mysqli->store_result();

// Parcours du résultat
while ($row = $result->fetch_assoc()) {
	echo $row['name'] . PHP_EOL;
}

// Fermeture de la connexion
$mysqli->close();
?>

Exemple procédural

Exemple :       Copier le code

<?php

// Connexion à la base de données
$mysqli = mysqli_connect('localhost', 'root', '', 'my_database');

// Exécution d'une requête
$result = mysqli_query($mysqli, 'SELECT * FROM users');

// Stockage du résultat
if ($result) {
	$result = mysqli_store_result($mysqli);
}

// Parcours du résultat
while ($row = mysqli_fetch_assoc($result)) {
	echo $row['name'] . PHP_EOL;
}

// Fermeture de la connexion
mysqli_close($mysqli);
?>

Cas d'utilisation de la fonction store_result() en PHP

Cas d'utilisation 1 : Afficher la liste de tous les utilisateurs de la table perso

Approche orientée objet

Exemple :       Copier le code

<?php

// Connexion à la base de données
$mysqli = new mysqli(\'localhost\', \'root\', \'\', \'teste\');

// Exécution d\'une requête
$mysqli->query(\'SELECT * FROM perso\');

// Stockage du résultat
$result = $mysqli->store_result();

// Parcours du résultat
while ($row = $result->fetch_assoc()) {
echo $row[\'nom\'] . \' \' . $row[\'prenom\'] . PHP_EOL;
}

// Fermeture de la connexion
$mysqli->close();

?>

Approche procédurale

Exemple :       Copier le code

<?php

// Connexion à la base de données
$mysqli = mysqli_connect(\'localhost\', \'root\', \'\', \'teste\');

// Exécution d\'une requête
$result = mysqli_query($mysqli, \'SELECT * FROM perso\');

// Stockage du résultat
if ($result) {
$result = mysqli_store_result($mysqli);
}

// Parcours du résultat
while ($row = mysqli_fetch_assoc($result)) {
echo $row[\'nom\'] . \' \' . $row[\'prenom\'] . PHP_EOL;
}

// Fermeture de la connexion
mysqli_close($mysqli);

?>

Cas d'utilisation 2 : Afficher le nom et le prix du produit le plus cher de la table produits

Approche orientée objet

Exemple :       Copier le code

<?php

// Connexion à la base de données
$mysqli = new mysqli(\'localhost\', \'root\', \'\', \'teste\');

// Exécution d\'une requête
$mysqli->query(\'SELECT nom_produit, prix FROM produits ORDER BY prix DESC LIMIT 1\');

// Stockage du résultat
$result = $mysqli->store_result();

// Parcours du résultat
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
echo $row[\'nom_produit\'] . \' : \' . $row[\'prix\'] . PHP_EOL;
} else {
echo \'Aucun produit trouvé\';
}

// Fermeture de la connexion
$mysqli->close();

?>

Approche procédurale

Exemple :       Copier le code

<?php

// Connexion à la base de données
$mysqli = mysqli_connect(\'localhost\', \'root\', \'\', \'teste\');

// Exécution d\'une requête
$result = mysqli_query($mysqli, \'SELECT nom_produit, prix FROM produits ORDER BY prix DESC LIMIT 1\');

// Stockage du résultat
if ($result) {
$result = mysqli_store_result($mysqli);
}

// Parcours du résultat
if ($result->num_rows > 0) {
$row = mysqli_fetch_assoc($result);
echo $row[\'nom_produit\'] . \' : \' . $row[\'prix\'] . PHP_EOL;
} else {
echo \'Aucun produit trouvé\';
}

// Fermeture de la connexion
mysqli_close($mysqli);

?>

Astuces pour choisir l'approche orientée objet ou procédurale

En général, l'approche orientée objet est préférée car elle est plus concise et plus facile à lire et à comprendre. Cependant, l'approche procédurale peut être plus adaptée dans certaines situations, par exemple lorsque vous utilisez un code existant qui n'utilise pas l'approche orientée objet.

Astuces et conseils d'utilisation pratique

  • Il est important de libérer la mémoire utilisée par le résultat stocké en utilisant la fonction mysqli_free_result().
  • Si vous utilisez la syntaxe procédurale, veillez à vérifier si la fonction store_result() a renvoyé false avant d'utiliser l'objet mysqli_result.
  • Si vous travaillez avec de grands ensembles de données, il est recommandé d'utiliser la fonction mysqli_use_result() pour charger les données au fur et à mesure qu'elles sont nécessaires.

Conclusion

La fonction store_result() est un outil puissant qui permet d'améliorer les performances de vos applications PHP en travaillant avec les données de vos requêtes SQL de manière plus efficace.




Voir aussi nos tutoriel :

localeconv

Lit la configuration locale

Retourne la valeur numérique entière équivalente d'une variable

 Retourne la valeur numérique entière équivalente d'une variable

Affichage fichiers XML

Affichage fichiers XML