sql >> Database teknologi >  >> RDS >> Mysql

Rækketælling med BOB

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


  1. SQL Server System Database Vedligeholdelse

  2. SQLite udtryksbaseret indeks

  3. PostgreSQL visuel grænseflade, der ligner phpMyAdmin?

  4. Hvornår skal man bruge MongoDB eller andre dokumentorienterede databasesystemer?