sql >> Databáze >  >> RDS >> Mysql

Počet řádků s PDO

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

Není to nejelegantnější způsob, jak to udělat, a navíc to vyžaduje další dotaz.

PDO má PDOStatement::rowCount() , což zřejmě ne pracovat v MySql. Jaká bolest.

Z dokumentu PDO:

U většiny databází PDOStatement::rowCount() nevrací počet řádků ovlivněných příkazem SELECT. Místo toho použijte PDO::query() k zadání příkazu SELECTCOUNT(*) se stejnými predikáty jako zamýšlený příkaz SELECT, poté použijte PDOStatement::fetchColumn() k získání počtu řádků, které budou vráceny. Vaše aplikace pak může provést správnou akci.

EDIT:Výše ​​uvedený příklad kódu používá připravený příkaz, který je v mnoha případech pravděpodobně zbytečný pro účely počítání řádků, takže:

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


  1. Pomalý jednoduchý aktualizační dotaz na databázi PostgreSQL s 3 miliony řádků

  2. Zobrazit datum další události

  3. Bezpečně přejmenovávejte tabulky pomocí sloupců sériového primárního klíče

  4. Levenshtein:MySQL + PHP