Mysql
 sql >> Base de données >  >> RDS >> Mysql

Nombre de lignes avec PDO

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

Ce n'est pas la façon la plus élégante de le faire, en plus cela implique une requête supplémentaire.

PDO a PDOStatement::rowCount() , ce qui n'est apparemment pas travailler dans MySql. Quelle douleur.

À partir du document PDO :

Pour la plupart des bases de données, PDOStatement::rowCount() ne renvoie pas le nombre de lignes affectées par une instruction SELECT. Au lieu de cela, utilisezPDO::query() pour émettre une instruction SELECTCOUNT(*) avec les mêmes prédicats que votre instruction SELECT prévue, puis utilisezPDOStatement::fetchColumn() pour récupérer le nombre de lignes qui seront renvoyées. Votre application peut alors effectuer l'action correcte.

EDIT :l'exemple de code ci-dessus utilise une instruction préparée, qui est dans de nombreux cas probablement inutile pour compter les lignes, donc :

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