$sql = "SELECT count(*) FROM `table` WHERE foo = ?";
$result = $con->prepare($sql);
$result->execute([$bar]);
$number_of_rows = $result->fetchColumn();
Ikke den mest elegante måde at gøre det på, plus det involverer en ekstra forespørgsel.
PDO har PDOStatement::rowCount()
, hvilket tilsyneladende ikke gør arbejde i MySql. Hvilken smerte.
Fra BOB-dokumentet:
For de fleste databaser returnerer PDOStatement::rowCount() ikke antallet af rækker, der er påvirket af en SELECT-sætning. Brug i stedet PDO::query() til at udstede en SELECTCOUNT(*)-sætning med de samme prædikater som din tilsigtede SELECT-sætning, og brug derefter PDOStatement::fetchColumn() for at hente antallet af rækker, der returneres. Din ansøgning kan derefter udføre den korrekte handling.
EDIT:Ovenstående kodeeksempel bruger en forberedt sætning, som i mange tilfælde sandsynligvis er unødvendig med henblik på at tælle rækker, så:
$nRows = $pdo->query('select count(*) from blah')->fetchColumn();
echo $nRows;