mysql_affected_rows

(PHP 3, PHP 4, PHP 5)

mysql_affected_rows -- Obtém o número de linhas atingidas na operação anterior do MySQL

Descrição

int mysql_affected_rows ( [resource link_identifier] )

Obtém o número de linhas atingidas pela consulta INSERT, UPDATE, REPLACE ou DELETE mais recente associada ao link_identifier.

Parâmetros

link_identifier

The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If by chance no connection is found or established, an E_WARNING level warning is generated.

Valores de retornado

Retona o número de linas atingidas em caso de sucesso, e -1 se a ultima consulta falhou.

Se a ultima consulta foi um consulta DELETE sem a claúsula WHERE, todos os registros terão sido excluídos da tabela mas esta função irá retornar zero com versões do MySQL anteriores a 4.1.2.

Ao usar UPDATE, o MySQL não irá atualizar colunas aonde o novo valor é o mesmo que o valor anterior. Isto cria a possibilidade de que mysql_affected_rows() possa não ser igual ao número de linhas encontradas, apenas o número de linhas que literalmente foram afetadas pela consulta.

O comando REPLACE primeiro exclui o registro com a mesma chave primaria e então insere o novo registro. Esta função retorna o número de registros excluídos mais o número de registros inseridos.

Exemplos

Exemplo 1. Exemplo mysql_affected_rows()

<?php
$link
= mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!
$link) {
    die(
'Não foi possível 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 clausula 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 irá imprimir algo similar a:

Records deleted: 10
Records deleted: 0

Exemplo 2. Exemplo de mysql_affected_rows() usando transações

<?php
$link
= mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!
$link) {
    die(
'Não foi possível 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 irá imprimir algo similar a:

Updated Records: 10

Notas

Transações: Se você estiver usando transações, você deve utilizar mysql_affected_rows() depois da sua consulta INSERT, UPDATE, ou DELETE, não depois de COMMIT.

Comandos SELECT: Para obter o número de linhas retornados por um SELECT, é possível usar mysql_num_rows().

Veja também

mysql_num_rows()
mysql_info()