Uma solução simples seria duas consultas.
Primeiro, execute uma consulta SELECT para verificar se a linha existe usando mysqli_num_rows().
Então, se a linha existir, você pode executar a consulta UPDATE e usar mysqli_affected_rows().
[EDITAR]
...Vou sugerir uma alternativa potencial para quem procura uma única chamada. Não sei se você está interessado em fazer algum INSERTs, ou puramente UPDATEs. Abaixo, alguns alimentos para reflexão:
Do comentário superior @ http://php.net/manual/en/ mysqli.affected-rows.php :
Em consultas "INSERT INTO ON DUPLICATE KEY UPDATE", embora se possa esperar que as linhas_ afetadas retornem apenas 0 ou 1 por linha em consultas bem-sucedidas, ele pode, na verdade, retornar 2.
Do manual do Mysql:"Com ON DUPLICATE KEY UPDATE, o valor das linhas afetadas por linha é 1 se a linha for inserida como uma nova linha e 2 se uma linha existente for atualizada."
Veja:http://dev.mysql.com /doc/refman/5.0/en/insert-on-duplicate.html
Aqui está o detalhamento da soma por linha :
+0:uma linha não foi atualizada ou inserida (provavelmente porque a linha já existia, mas nenhum valor de campo foi realmente alterado durante o UPDATE)
+1:uma linha foi inserida
+2:uma linha foi atualizada
Você pode fazer isso se adequar às suas necessidades?