$sql = "SELECT count(*) FROM `table` WHERE foo = ?";
$result = $con->prepare($sql);
$result->execute([$bar]);
$number_of_rows = $result->fetchColumn();
Не е най-елегантният начин да го направите, освен това включва допълнителна заявка.
PDO има PDOStatement::rowCount()
, което очевидно нене работа в MySql. Каква болка.
От документа със ЗНП:
За повечето бази данни PDOStatement::rowCount() не връща броя на редовете, засегнати от оператор SELECT. Вместо това използвайте PDO::query(), за да издадете оператор SELECTCOUNT(*) със същите предикати като предвидения от вас SELECTstatement::fetchColumn(), за да извлечете броя на редовете, които ще бъдат върнати. След това приложението ви може да извърши правилното действие.
РЕДАКТИРАНЕ:Горният пример с код използва подготвен израз, който в много случаи вероятно е ненужен за целите на преброяването на редове, така че:
$nRows = $pdo->query('select count(*) from blah')->fetchColumn();
echo $nRows;