$sql = "SELECT count(*) FROM `table` WHERE foo = ?";
$result = $con->prepare($sql);
$result->execute([$bar]);
$number_of_rows = $result->fetchColumn();
Inte det mest eleganta sättet att göra det, plus det innebär en extra fråga.
PDO har PDOStatement::rowCount()
, vilket tydligen inte gör det arbeta i MySql. Vad jobbigt.
Från PDO-dokumentet:
För de flesta databaser returnerar PDOStatement::rowCount() inte antalet rader som påverkas av en SELECT-sats. Använd istället PDO::query() för att utfärda en SELECTCOUNT(*)-sats med samma predikat som din avsedda SELECT-sats, använd sedan PDOStatement::fetchColumn() för att hämta antalet rader som kommer att returneras. Din ansökan kan sedan utföra rätt åtgärd.
EDIT:Ovanstående kodexempel använder en förberedd sats, vilket i många fall förmodligen är onödigt för att räkna rader, så:
$nRows = $pdo->query('select count(*) from blah')->fetchColumn();
echo $nRows;