mysql_affected_rows
(PHP 4, PHP 5, PECL mysql:1.0)
mysql_affected_rows — Obtém o número de linhas atingidas na operação anterior do MySQL
Descrição
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
-
A conexão MySQL. se o identificador de conexão não for especificado, a ultima conexão aberta por mysql_connect() é assumida. Se uma conexão assim não for encontrada, ela irá tentar criar uma como se a função mysql_connect() fosse chamada sem argumentos. Se uma conexão não for encontrada ou estabelecida, um aviso de nÃvel E_WARNING é gerado.
Valor 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
Example#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
Example#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
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().