Une solution simple consisterait en deux requêtes.
Tout d'abord, exécutez une requête SELECT pour vérifier si la ligne existe à l'aide de mysqli_num_rows().
Ensuite, si la ligne existe, vous pouvez exécuter la requête UPDATE et utiliser mysqli_affected_rows().
[MODIFIER]
... Je proposerai une alternative potentielle à tous ceux qui recherchent un seul appel. Je ne sais pas si vous êtes intéressé à faire des INSERTS, ou purement des UPDATE. Voici quelques pistes de réflexion :
Du haut commentaire @ http://php.net/manual/en/ mysqli.affected-rows.php :
Sur les requêtes "INSERT INTO ON DUPLICATE KEY UPDATE", bien que l'on puisse s'attendre à ce qu'affected_rows ne renvoie que 0 ou 1 par ligne sur les requêtes réussies, il peut en fait renvoyer 2.
Du manuel Mysql :"Avec ON DUPLICATE KEY UPDATE, la valeur des lignes affectées par ligne est 1 si la ligne est insérée en tant que nouvelle ligne et 2 si une ligne existante est mise à jour."
Voir :http://dev.mysql.com /doc/refman/5.0/en/insert-on-duplicate.html
Voici la répartition de la somme par ligne :
+0 :une ligne n'a pas été mise à jour ou insérée (probablement parce que la ligne existait déjà, mais aucune valeur de champ n'a été modifiée lors de la mise à jour)
+1 :une ligne a été insérée
+2 :une ligne a été mise à jour
Pouvez-vous l'adapter à vos besoins ?