sql >> Base de Datos >  >> RDS >> Mysql

Recuento de filas con PDO

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

No es la forma más elegante de hacerlo, además implica una consulta adicional.

PDO tiene PDOStatement::rowCount() , que aparentemente no trabajar en MySql. Que dolor.

Del documento PDO:

Para la mayoría de las bases de datos, PDOStatement::rowCount() no devuelve el número de filas afectadas por una instrucción SELECT. En su lugar, utilice PDO::query() para emitir una declaración SELECTCOUNT(*) con los mismos predicados que su declaración SELECT deseada, luego use PDOStatement::fetchColumn() para recuperar el número de filas que se devolverán. Entonces su aplicación puede realizar la acción correcta.

EDITAR:el ejemplo de código anterior utiliza una declaración preparada, que en muchos casos probablemente no sea necesaria para el propósito de contar filas, por lo que:

$nRows = $pdo->query('select count(*) from blah')->fetchColumn(); 
echo $nRows;