mysql_affected_rows

(PHP 3, PHP 4 , PHP 5)

mysql_affected_rows -- Devolve o número de linhas afetadas na operação anterior com o MySQL

Descrição

int mysql_affected_rows ( [resource link_identifier] )

mysql_affected_rows() retorna o número de linhas afetadas pela ultima query INSERT, UPDATE ou DELETE associada a link_identifier. Se o identificador de link não é especificado, o ultimo link aberto por mysql_connect() é utilizado.

Nota: Se você esta usando transações, você deve chamar mysql_affected_rows() após sua query INSERT, UPDATE, ou DELETE, não depois de commit.

Se a ultima query foi um DELETE sem a cláusula WHERE, todos os registros foram apagados da tabela, mas esta função retornará zero.

Nota: Quando usando UPDATE, o MySQL não atualizará as colunas onde o novo valor é o mesmo que o valor anterior. Isto cria a possibilidade de que a função mysql_affected_rows() não seja atualmente igual ao número de linhas encontradas, somente o número de linhas que literalmente foram afetadas pela query.

A função mysql_affected_rows() não funciona com os comandos SELECT; somente comandos que modificam os registros. Para pegar o número de linhas retornados por SELECT, use mysql_num_rows().

Se a ultima query falhou, esta função irá retornar -1.

Exemplo 1. Delete-Query

<?php
/* Conecta ao banco de dados */
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!
$link) {
    die(
'Não pude conectar: ' . mysql_error());
}
mysql_select_db('mydb');

/* Isto deve retornar o número correto de registros excluídos */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Registros excluídos: %d\n", mysql_affected_rows());

/* Com uma claúsula where que jamais é verdadeira, deve retornar 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Registros excluídos: %d\n", mysql_affected_rows());
?>

O exemplo acima deve produzir a seguinte saída:

Registros excluídos: 10
Registros excluídos: 0

Exemplo 2. Update-Query

<?php
/* Conecta ao banco de dados */
mysql_connect("localhost", "mysql_user", "mysql_password") or
    die(
"Não pude conectar: " . mysql_error());
mysql_select_db("mydb");

/* Atualiza os registros */
mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
printf ("Registros atualizados: %d\n", mysql_affected_rows());
mysql_query("COMMIT");
?>

O exemplo acima deve produzir a seguinte saída:

Registros atualizados: 10

Veja também mysql_num_rows() e mysql_info().