PDOStatement::rowCount
Manual de referencia de PHP PDO
PDOStatement::rowCount — Devuelve el número de filas afectadas por la última sentencia SQL (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
Descripción
Sintaxis
int PDOStatement::rowCount ( void )
PDOStatement::rowCount() devuelve el número de filas afectadas por la última sentencia DELETE, INSERT o UPDATE ejecutada por el objeto PDOStatement correspondiente.
Si la última sentencia SQL ejecutada por el PDOStatement asociado es una sentencia SELECT, algunos datos pueden devolver el número de filas devueltas por esa sentencia. Sin embargo, este comportamiento no está garantizado para todos los datos y no debe confiarse en él para aplicaciones portables.
Valor de retorno
Devuelve el número de filas.
Ejemplo
Devuelve el número de filas eliminadas
PDOStatement::rowCount() devuelve el número de filas afectadas por sentencias DELETE, INSERT o UPDATE.
<?php
/* 从 FRUIT 数据表中删除所有行 */
$del = $dbh->prepare('DELETE FROM fruit');
$del->execute();
/* 返回被删除的行数 */
print("Return number of rows that were deleted:\n");
$count = $del->rowCount();
print("Deleted $count rows.\n");
?>
La salida del ejemplo anterior es:
Return number of rows that were deleted: Deleted 9 rows.
Calcular el número de filas devueltas por una sentencia SELECT
Para la mayoría de las bases de datos, PDOStatement::rowCount() no puede devolver el número de filas afectadas por una sentencia SELECT. Un método alternativo es usar PDO::query() para enviar una sentencia SELECT COUNT(*) con las mismas condiciones que la sentencia SELECT que se pretendía ejecutar, y luego usar PDOStatement::fetchColumn() para obtener la siguiente fila. De esta manera la aplicación puede ejecutarse correctamente.
<?php
$sql = "SELECT COUNT(*) FROM fruit WHERE calories > 100";
if ($res = $conn->query($sql)) {
/* 检查符合 SELECT 语句的行数 */
if ($res->fetchColumn() > 0) {
/* 发出一条真正的 SELECT 语句并操作返回的结果 */
$sql = "SELECT name FROM fruit WHERE calories > 100";
foreach ($conn->query($sql) as $row) {
print "Name: " . $row['NAME'] . "\n";
}
}
/* 没有匹配的行 -- 执行其他 */
else {
print "No rows matched the query.";
}
}
$res = null;
$conn = null;
?>
El resultado del ejemplo anterior es:
apple banana orange pear
Otras extensiones