Nombre de lignes précis avec PDO en PHP
La détermination du nombre de lignes dans une requête de base de données est cruciale pour de nombreuses applications. Avec l'introduction du PDO (PHP Data Objects), il y a eu quelques divergences concernant la meilleure approche pour récupérer le nombre de lignes. Explorons les méthodes les plus efficaces.
Éviter fetchAll() avec de grands ensembles de données
Bien que fetchAll() soit une méthode pratique pour récupérer tous les résultats d'une requête, ce n'est pas le cas. idéal pour les grands ensembles de données où l'utilisation de la mémoire est un problème. Si seul le nombre de lignes est nécessaire, une approche alternative est préférable.
Récupération du nombre de lignes sans données
Lorsque les données réelles ne sont pas requises, l'approche suivante est recommandée :
$sql = "SELECT count(*) FROM `table` WHERE foo = ?"; $result = $con->prepare($sql); $result->execute([$bar]); $number_of_rows = $result->fetchColumn();
Cette requête récupère directement le nombre de lignes sans récupérer les données elles-mêmes, en enregistrant mémoire.
PDOStatement::rowCount()
Pour obtenir le nombre de lignes ainsi que les données récupérées, PDO fournit PDOStatement::rowCount(). Dans MySQL, cette méthode fonctionne efficacement avec les requêtes mises en mémoire tampon, qui sont activées par défaut. Cependant, sa fiabilité n'est pas garantie pour les autres pilotes de base de données.
Utilisation de PDO::query()
Si une requête ne contient aucune variable, une approche plus concise consiste à utiliser PDO::query() au lieu d'une instruction préparée :
$nRows = $pdo->query('select count(*) from blah')->fetchColumn(); echo $nRows;
Cette méthode élimine le besoin d'une variable $result distincte et simplifie le code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!