PDOStatement::rowCount
(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
PDOStatement::rowCount — Devuelve el número de filas afectadas por la última sentencia SQL
Descripción
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
- PDOStatement::columnCount() - Devuelve el número de columnas de un conjunto de resultados
- PDOStatement::fetchColumn() - Devuelve una única columna de la siguiente fila de un conjunto de resultados
- PDO::query() - Ejecuta una sentencia SQL, devolviendo un conjunto de resultados como un objeto PDOStatement