Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zeilenzählung mit PDO

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

Dies ist nicht die eleganteste Methode, außerdem ist eine zusätzliche Abfrage erforderlich.

PDO hat PDOStatement::rowCount() , was anscheinend nicht der Fall ist Arbeiten in MySQL. Was für ein Schmerz.

Aus dem PDO-Dokument:

Bei den meisten Datenbanken gibt PDOStatement::rowCount() nicht die Anzahl der Zeilen zurück, die von einer SELECT-Anweisung betroffen sind. Verwenden Sie stattdessen PDO::query(), um eine SELECTCOUNT(*)-Anweisung mit denselben Prädikaten wie Ihre beabsichtigte SELECT-Anweisung auszugeben, und verwenden Sie dann PDOStatement::fetchColumn(), um die Anzahl der zurückgegebenen Zeilen abzurufen. Ihre Anwendung kann dann die richtige Aktion ausführen.

BEARBEITEN:Das obige Codebeispiel verwendet eine vorbereitete Anweisung, die in vielen Fällen wahrscheinlich unnötig ist, um Zeilen zu zählen, also:

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