Mysql
 sql >> Database >  >> RDS >> Mysql

Conteggio righe con DOP

$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;