Outro motivo para você obter 0 linhas afetadas é se o
UPDATE
instrução não corresponde a nenhuma linha. Por exemplo:UPDATE MyTable SET field = 'content' WHERE id = 1234;
Fornece 0 linhas afetadas se nenhuma linha existir com
id = 1234
. Isso também não é um erro, é apenas um UPDATE
que aconteceu de não corresponder a nenhuma linha. A maneira de detectar este caso é usar
SELECT
para verificar se existe tal linha. Se você puder confirmar que a linha existe, mas o UPDATE
disse que afetou 0 linhas, então você sabe que os valores que você tentou alterar eram de fato as linhas que já estavam no banco de dados. SELECT COUNT(*) FROM MyTable WHERE id = 1234;
Mas a distinção pode não ser importante. Você pode relatar um erro se
mysql_error()
diz que há um, como sugere @BoltClock.*Se não houver erro, você pode simplesmente relatar "sem alteração" ao usuário.