$sql = "SELECT count(*) FROM `table` WHERE foo = ?";
$result = $con->prepare($sql);
$result->execute([$bar]);
$number_of_rows = $result->fetchColumn();
Niet de meest elegante manier om het te doen, en het vereist een extra vraag.
PDO heeft PDOStatement::rowCount()
, wat blijkbaar niet . doet werken in MySql. Wat een pijn.
Uit het BOB-document:
Voor de meeste databases retourneert PDOStatement::rowCount() niet het aantal rijen dat wordt beïnvloed door een SELECT-instructie. Gebruik in plaats daarvan PDO::query() om een SELECTCOUNT(*)-instructie uit te geven met dezelfde predikaten als uw beoogde SELECT-instructie, en gebruik vervolgens PDOStatement::fetchColumn() om het aantal rijen op te halen dat wordt geretourneerd. Uw toepassing kan dan de juiste actie uitvoeren.
EDIT:Het bovenstaande codevoorbeeld gebruikt een voorbereide instructie, die in veel gevallen waarschijnlijk niet nodig is voor het tellen van rijen, dus:
$nRows = $pdo->query('select count(*) from blah')->fetchColumn();
echo $nRows;