$sql = "SELECT count(*) FROM `table` WHERE foo = ?";
$result = $con->prepare($sql);
$result->execute([$bar]);
$number_of_rows = $result->fetchColumn();
Nie jest to najbardziej elegancki sposób na zrobienie tego, a ponadto wiąże się z dodatkowym zapytaniem.
PDO ma PDOStatement::rowCount()
, co najwyraźniej nie pracować w MySQL. Co za ból.
Z dokumentu PDO:
W przypadku większości baz danych PDOStatement::rowCount() nie zwraca liczby wierszy, których dotyczy instrukcja SELECT. Zamiast tego użyj PDO::query(), aby wydać instrukcję SELECTCOUNT(*) z tymi samymi predykatami, co zamierzona instrukcja SELECT, a następnie użyj PDOStatement::fetchColumn(), aby pobrać liczbę wierszy, które zostaną zwrócone. Twoja aplikacja może wtedy wykonać odpowiednią akcję.
EDYCJA:Powyższy przykład kodu używa przygotowanej instrukcji, która w wielu przypadkach jest prawdopodobnie niepotrzebna do celów liczenia wierszy, więc:
$nRows = $pdo->query('select count(*) from blah')->fetchColumn();
echo $nRows;