PHP Conference Nagoya 2025

mysql_affected_rows

(PHP 4, PHP 5)

mysql_affected_rowsObtiene el número de filas afectadas en la anterior operación de MySQL

Advertencia

Esta extensión fue declarada obsoleta en PHP 5.5.0 y eliminada en PHP 7.0.0. En su lugar debería utilzarse las extensiones MySQLi o PDO_MySQL. Véase también la guía MySQL: elegir una API. Las alternativas a esta función son:

Descripción

mysql_affected_rows(resource $link_identifier = NULL): int

Obtiene el número de filas afectadas por la última consulta INSERT, UPDATE, REPLACE o DELETE asociada con link_identifier.

Parámetros

link_identifier

La conexión MySQL. Si no se especifica el identificador de enlace, se asume el último enlace abierto por mysql_connect(). Si no se encuentra este enlace, se intentará crear un nuevo enlace como si mysql_connect() hubiese sido invocada sin argumentos. Si no se encuentra o establece ninguna conexión, se genera un error de nivel E_WARNING.

Valores devueltos

Devuelve el número de filas afectadas en caso de éxito, y -1 si la última consulta falló.

Si la consulta anterior fue DELETE con ninguna cláusula WHERE, todos los registros habrán sido borrados de la tabla, aunque ésta función devolverá cero con una versión anterior a MySQL 4.1.2.

Al utilizar UPDATE, MySQL no actualiza las columnas donde el nuevo valor es el mismo que el anterior. Esto crea la posibilidad de que mysql_affected_rows() no pueda equivaler en realidad al número de filas encontradas, solamente el número de filas que estuvieron literalmente afectadas por la consulta.

La sentencia REPLACE primero borra el registro con la misma clave primaria y luego inserta el nuevo registro. Esta función devuelve el número de registros borrados más el número de registros insertados.

En el caso de consultas "INSERT ... ON DUPLICATE KEY UPDATE", el valor devuelto será 1 si se realizó una inserción, o 2 para una actualización de una fila existente.

Ejemplos

Ejemplo #1 Ejemplo de mysql_affected_rows()

<?php
$enlace
= mysql_connect('localhost', 'usuario_mysql', 'contraseña_mysql');
if (!
$enlace) {
die(
'No se pudo conectar: ' . mysql_error());
}
mysql_select_db('mibd');

/* Esto debería devolver el número correcto de registros borrados */
mysql_query('DELETE FROM mitabla WHERE id < 10');
printf("Registros borrados: %d\n", mysql_affected_rows());

/* con una clausula WHERE que nunca es verdad, debería devolver 0 */
mysql_query('DELETE FROM mitabla WHERE 0');
printf("Registros borrados: %d\n", mysql_affected_rows());
?>

El resultado del ejemplo sería algo similar a:

Registros borrados: 10
Registros borrados: 0

Ejemplo #2 Ejemplo de mysql_affected_rows() al utilizar transacciones

<?php
$enlace
= mysql_connect('localhost', 'usuario_mysql', 'contraseña_mysql');
if (!
$enlace) {
die(
'No se pudo conectar: ' . mysql_error());
}
mysql_select_db('mibd');

/* Actualizar registros */
mysql_query("UPDATE mitabla SET usado=1 WHERE id < 10");
printf ("Registros actualizados: %d\n", mysql_affected_rows());
mysql_query("COMMIT");
?>

El resultado del ejemplo sería algo similar a:

Registros actualizados: 10

Notas

Nota: Transacciones

Si se usan transacciones, es necesario llamar a mysql_affected_rows() después de una consulta INSERT, UPDATE, o DELETE, no después del COMMIT.

Nota: Sentencias SELECT

Para conocer el número de filas devueltas por un SELECT, es posible usar mysql_num_rows().

Nota: Claves Foráneas en Cascada

mysql_affected_rows() no cuenta la filas afectadas implícitamente a través del uso de ON DELETE CASCADE y/o ON UPDATE CASCADE en las restricciones de las claves foráneas.

Ver también

  • mysql_num_rows() - Obtener el número de filas de un conjunto de resultados
  • mysql_info() - Obtiene información sobre la consulta más reciente

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top