sql >> Databasteknik >  >> RDS >> Mysql

Antal rader med PDO

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


  1. Hur man ställer in namngivna tidszoner i MariaDB

  2. Hämta veckostartdatum och veckoslutdatum från veckonummer

  3. Vad gör den här frågan för att skapa SQL Server med kommaavgränsad lista?

  4. Hur man installerar SQLcl på en Mac