mysqli_stmt::$affected_rows

mysqli_stmt_affected_rows

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::$affected_rows -- mysqli_stmt_affected_rowsDevuelve el número total de filas modificadas, eliminadas, insertadas o coincidentes por la última consulta

Descripción

Estilo orientado a objetos

Estilo por procedimientos

mysqli_stmt_affected_rows(mysqli_stmt $statement): int|string

Devuelve el número de filas afectadas por una consulta INSERT, UPDATE o DELETE.

Funciona como mysqli_stmt_num_rows() para las consultas SELECT.

Parámetros

stmt

Sólo estilo por procediminetos: Un identificador de declaraciones devuelto por mysqli_stmt_init().

Valores devueltos

Un entero mayor que cero indica el número de filas afectadas o recuperadas. Cero indica que ningún registro fue modificado por una consulta de tipo UPDATE, ninguna fila coincide con la cláusula WHERE en la consulta o que ninguna consulta fue ejecutada. -1 indica que la consulta devolvió un error o que, para una consulta SELECT, mysqli_stmt_affected_rows() fue llamado antes de llamar mysqli_stmt_store_result().

Nota:

Si el número de filas afectadas es mayor que el valor máximo (PHP_INT_MAX) que puede tomar un entero, el número de filas afectadas será devuelto como una cadena de caracteres.

Ejemplos

Ejemplo #1 Ejemplo de mysqli_stmt_affected_rows()

Estilo orientado a objetos

<?php
mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* Creación de una tabla temporal */
$mysqli->query("CREATE TEMPORARY TABLE myCountry LIKE Country");

$query = "INSERT INTO myCountry SELECT * FROM Country WHERE Code LIKE ?";

/* Preparación de la consulta */
$stmt = $mysqli->prepare($query);

/* Vincula una variable a un parámetro ficticio */
$code = 'A%';
$stmt->bind_param("s", $code);

/* Ejecución de la consulta */
$stmt->execute();

printf("Filas insertadas: %d\n", $stmt->affected_rows);
?>

Estilo por procedimientos

<?php
mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* Creación de una tabla temporal */
mysqli_query($link, "CREATE TEMPORARY TABLE myCountry LIKE Country");

$query = "INSERT INTO myCountry SELECT * FROM Country WHERE Code LIKE ?";

/* Preparación de la consulta */
$stmt = mysqli_prepare($link, $query);

/* Vincula una variable a un parámetro ficticio */
$code = 'A%';
mysqli_stmt_bind_param($stmt, "s", $code);

/* Ejecución de la consulta */
mysqli_stmt_execute($stmt);

printf("Filas insertadas: %d\n", mysqli_stmt_affected_rows($stmt));
?>

El resultado del ejemplo sería:

Filas insertadas: 17

Ver también

add a note

User Contributed Notes 1 note

up
30
Carl Olsen
19 years ago
It appears that an UPDATE prepared statement which contains the same data as that already in the database returns 0 for affected_rows. I was expecting it to return 1, but it must be comparing the input values with the existing values and determining that no UPDATE has occurred.
To Top