PDOStatement::rowCount

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDOStatement::rowCount Devuelve el número de filas afectadas por la última sentencia SQL

Descripción

public PDOStatement::rowCount ( void ) : int

PDOStatement::rowCount() devuelve el número de filas afectadas por la última sentencia DELETE, INSERT, o UPDATE ejecutada por el correspondiente objeto PDOStatement.

Si la última sentencia SQL ejecutada por el objeto PDOStatement asociado fue una sentencia SELECT, algunas bases de datos podrían devolver el número de filas devuelto por dicha sentencia. Sin embargo, este comportamiento no está garantizado para todas las bases de datos y no debería confiarse en él para aplicaciones portables.

Valores devueltos

Devuelve el número de filas.

Ejemplos

Ejemplo #1 Devolver el número de filas eliminadas

PDOStatement::rowCount() devuelve el número de filas afectadas por una sentencia DELETE, INSERT, o UPDATE.

<?php
/* Borrar todas las filas de la tabla FRUIT */
$del $gbd->prepare('DELETE FROM fruit');
$del->execute();

/* Devolver el número de filas que fueron eliminadas */
print("Devolver el número de filas que fueron eliminadas:\n");
$cuenta $del->rowCount();
print(
"Eliminadas $cuenta filas.\n");
?>

El resultado del ejemplo sería:

Devolver el número de filas que fueron eliminadas:
Eliminadas 9 filas.

Ejemplo #2 Contar las filas devueltas por una sentencia SELECT

Para muchas bases de datos, PDOStatement::rowCount() no devuelve el número de filas afectadas por una sentencia SELECT. En su lugar, use PDO::query() para ejecutar una sentencia SELECT COUNT(*) con las mismas declaraciones que la sentencia SELECT pretendida, luego use PDOStatement::fetchColumn() para recuperar el número de filas que serán devueltas. La aplicación podrá entonces realizar la acción correcta.

<?php
$sql 
"SELECT COUNT(*) FROM fruit WHERE calories > 100";
if (
$resultado $conexión->query($sql)) {

    
/* Comprobar el número de filas que coinciden con la sentencia SELECT */
  
if ($resultado->fetchColumn() > 0) {

        
/* Ejecutar la sentencia SELECT real y trabajar con los resultados */
         
$sql "SELECT name FROM fruit WHERE calories > 100";
       foreach (
$conexión->query($sql) as $fila) {
           print 
"Nombre: " .  $fila['NAME'] . "\n";
         }
    }
    
/* No coincide ningua fila -- hacer algo en consecuencia */
  
else {
      print 
"Ninguna fila coincide con la consulta.";
    }
}

$resultado null;
$conexión null;
?>

El resultado del ejemplo sería:

apple
banana
orange
pear

Ver también