PHP 8.5.0 Alpha 2 available for testing

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 estaba obsoleta en PHP 5.5.0, y fue eliminada en PHP 7.0.0. En su lugar, se puede utilizar la extensión MySQLi o la extensión PDO_MySQL. Ver también MySQL: elegir una API de la guía. Alternativas a esta función:

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, se utilizará la última conexión abierta con la función mysql_connect(). Si no se encuentra una conexión de este tipo, la función intentará abrir una conexión, como si la función mysql_connect() hubiera sido llamada sin argumento. Si no se encuentra o establece una conexión, se generará una alerta 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());
?>

Resultado del ejemplo anterior es 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");
?>

Resultado del ejemplo anterior es 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