Manual do PHP
Anterior |  | Próxima

# 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().

Anterior | Principal | Próxima
MySQL | Acima | mysql_change_user