Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Contagem de linhas com PDO

$sql = "SELECT count(*) FROM `table` WHERE foo = ?"; 
$result = $con->prepare($sql); 
$result->execute([$bar]); 
$number_of_rows = $result->fetchColumn(); 

Não é a maneira mais elegante de fazer isso, além de envolver uma consulta extra.

O PDO tem PDOStatement::rowCount() , que aparentemente não trabalhar no MySql. Que dor.

Do documento PDO:

Para a maioria dos bancos de dados, PDOStatement::rowCount() não retorna o número de linhas afetadas por uma instrução SELECT. Em vez disso, use PDO::query() para emitir uma instrução SELECTCOUNT(*) com os mesmos predicados que sua instrução SELECT pretendida e, em seguida, use PDOStatement::fetchColumn() para recuperar o número de linhas que serão retornadas. Seu aplicativo pode então executar a ação correta.

EDIT:O exemplo de código acima usa uma instrução preparada, que em muitos casos é provavelmente desnecessária para fins de contagem de linhas, então:
$nRows = $pdo->query('select count(*) from blah')->fetchColumn(); 
echo $nRows;