Función mysql_affected_rows()

my_ulonglong mysql_affected_rows(MYSQL *mysql)

Devuelve el número de filas afectadas por la última sentencia UPDATE, las borradas por la última sentencia DELETE o insertadas por la última sentencia INSERT. Debe ser llamada inmediatamente después de la llamada a mysql_query() para las sentencias UPDATE, DELETE o INSERT. Para sentencias SELECT, mysql_affected_rows() funciona igual que mysql_num_rows().

Valores de retorno

Un entero mayor que cero indica el número de filas afectadas o recuperadas. Cero indica que ninguna fila fue actualizada para una sentencia UPDATE, que no hay filas coincidentes con la cláusula WHERE de la consulta o que no se ha ejecutado ninguna consulta. -1 indica que la consulta ha retornado un error o que, para una consulta SELECT, mysql_affected_rows() fue llamada antes de una llamada a la función mysql_store_result(). Como mysql_affected_rows() devuelve un valor sin signo, se puede verificar el valor -1 comparando el valor de retorno con (my_ulonglong)-1 (o con (my_ulonglong)~0, que es equivalente).

Errores

No tiene.

Ejemplo

mysql_query(&mysql,"UPDATE products SET cost=cost*1.25 WHERE group=10");
printf("%ld products updated",(long) mysql_affected_rows(&mysql));

Si se especifica la opción CLIENT_FOUND_ROWS cuando se conecta a mysqld, mysql_affected_rows() devolverá el número de filas coincidentes con la cláusula WHERE para la sentencia UPDATE.

Hay que tener en cuenta que si se usa un comando REPLACE, mysql_affected_rows() devuelve 2 si la nueva fila reemplaza a una antigua. Esto es porque en ese caso la fila es insertada después de que la duplicada sea borrada.

Si se usa INSERT ... ON DUPLICATE KEY UPDATE para insertar una fila, mysql_affected_rows() devuelve 1 si la fila es insertada como una nueva y 2 si se acutaliza una fila existente.