$sql = "SELECT count(*) FROM `table` WHERE foo = ?";
$result = $con->prepare($sql);
$result->execute([$bar]);
$number_of_rows = $result->fetchColumn();
Non è il modo più elegante per farlo, inoltre comporta una query in più.
PDO ha PDOStatement::rowCount()
, che apparentemente non lavorare in MySql. Che dolore.
Dalla DOP Doc:
Per la maggior parte dei database, PDOStatement::rowCount() non restituisce il numero di righe interessate da un'istruzione SELECT. Utilizzare invece PDO::query() per emettere un'istruzione SELECTCOUNT(*) con gli stessi predicati dell'istruzione SELECT prevista, quindi utilizzarePDOStatement::fetchColumn() per recuperare il numero di righe che verranno restituite. La tua applicazione può quindi eseguire l'azione corretta.
EDIT:l'esempio di codice sopra utilizza un'istruzione preparata, che in molti casi è probabilmente non necessaria allo scopo di contare le righe, quindi:
$nRows = $pdo->query('select count(*) from blah')->fetchColumn();
echo $nRows;