mysql_affected_rows

(PHP 3, PHP 4 )

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 com o banco de dados */
    
mysql_pconnect("localhost", "mysql_user", "mysql_password") or
        die (
"Não pude conectar: " . mysql_error());
    
mysql_select_db("mydb");

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

    
/* Sem a clausula where no comando delete, deve retornar 0 */
    
mysql_query("DELETE FROM mytable");
    
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 com o banco de dados */
    
mysql_pconnect("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().