Funções da MySQL
PHP Manual

mysql_affected_rows

(PHP 4, PHP 5)

mysql_affected_rowsObtém o número de linhas afetadas na operação anterior do MySQL

Aviso

Esta extensão está obsoleta desde o PHP 5.5.0 e foi removida no PHP 7.0.0. Utilize MySQLi ou PDO_MySQL alternativamente. Veja também MySQL: escolhendo uma API e FAQs relacionadas para mais informações. Alternativas a essa função incluem:

Descrição

int mysql_affected_rows ([ resource $link_identifier = NULL ] )

Obtém o número de linhas afetadas pelo último INSERT, UPDATE, REPLACE ou DELETE associado ao link_identifier.

Parâmetros

link_identifier

A conexão MySQL. Se o link identifier não for especificado, o último link aberto por mysql_connect() é utilizado. Se uma conexão anterior não existir será tentado criar um a partir de uma chadama a mysql_connect() sem nenhum argumento. Se nenhuma conexão for encontrada ou estabelecida, um erro nível E_WARNING é gerado.

Valor Retornado

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

Se a última consulta foi um DELETE sem a claúsula WHERE, todos os registros terão sido excluídos da tabela mas esta função irá retornar zero em 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 primária 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.

No caso de consultas "INSERT ... ON DUPLICATE KEY UPDATE", o valor retornado será 1 se um insert foi executado, ou 2 para um update de uma linha existente.

Exemplos

Exemplo #1 Exemplo mysql_affected_rows()

<?php
$link 
mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link) {
    die(
'Could not connect: ' mysql_error());
}
mysql_select_db('mydb');

/* this should return the correct numbers of deleted records */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Records deleted: %d\n"mysql_affected_rows());

/* with a where clause that is never true, it should return 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Records deleted: %d\n"mysql_affected_rows());
?>

O exemplo acima irá imprimir algo similar à:

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(
'Could not connect: ' mysql_error());
}
mysql_select_db('mydb');

/* Update records */
mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
printf ("Updated records: %d\n"mysql_affected_rows());
mysql_query("COMMIT");
?>

O exemplo acima irá imprimir algo similar à:

Updated Records: 10

Notas

Nota: 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.

Nota: Comandos SELECT

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

Nota: Chaves estrangeiras em cascata

mysql_affected_rows() não conta linhas afetadas implicitamente pelo uso de ON DELETE CASCADE e/ou ON UPDATE CASCADE em chaves estrangeiras.

Veja Também


Funções da MySQL
PHP Manual