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