Maison >base de données >tutoriel mysql >Quelle est la manière la plus efficace de compter les lignes à l'aide de PDO en PHP ?

Quelle est la manière la plus efficace de compter les lignes à l'aide de PDO en PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-24 08:59:14130parcourir

What's the Most Efficient Way to Count Rows Using PDO in PHP?

Comptage des lignes avec PDO

Contexte

La détermination de la méthode optimale pour récupérer le nombre de lignes à l'aide de PDO en PHP reste un sujet de débat. Cet article explore des approches alternatives, fournissant des conseils aux programmeurs à la recherche d'une solution efficace.

Approche centrée sur la base de données

Pour les scénarios dans lesquels l'accès aux données réelles n'est pas nécessaire, une approche centrée sur la base de données est recommandée. Avec cette méthode, la base de données effectue le décompte des lignes, renvoyant uniquement la valeur numérique. Le code suivant illustre cette approche :

$sql = "SELECT count(*) FROM `table` WHERE foo = ?";
$result = $con->prepare($sql);
$result->execute([$bar]);
$number_of_rows = $result->fetchColumn();

Alternativement, PDStatement::rowCount() peut être utilisé pour obtenir le nombre de lignes lorsque les données elles-mêmes sont également récupérées. Cette méthode fonctionne efficacement avec les requêtes mises en mémoire tampon de MySQL (activées par défaut).

Approche centrée sur PDO

Cependant, s'appuyer uniquement sur PDStatement::rowCount() n'est pas garanti pour les autres bases de données. Selon la documentation PDO :

"Pour la plupart des bases de données, PDOStatement::rowCount() ne renvoie pas le nombre de lignes affectées par une instruction SELECT."

Pour surmonter cette limitation, la documentation suggère d'émettre une instruction SELECT COUNT(*) en utilisant PDO::query() puis d'utiliser PDStatement::fetchColumn() pour récupérer le fichier souhaité. value.

Enfin, pour les requêtes simples sans espaces réservés variables, PDO::query() peut être utilisé directement :

$nRows = $pdo->query('select count(*) from blah')->fetchColumn();
echo $nRows;

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn