sql >> Database >  >> RDS >> Mysql

Aantal rijen met PDO

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


  1. Prestatiemythen:tekenreekskolommen te groot maken

  2. Vereenvoudig gebruikersaccountbeheer met MariaDB MaxScale 2.2 en MariaDB Server 10.3

  3. 5 manieren om tijdelijke tabellen weer te geven met T-SQL

  4. MySQL - Maak een bestaand veld uniek