Prostym rozwiązaniem byłyby dwa zapytania.
Najpierw uruchom zapytanie SELECT, aby sprawdzić, czy wiersz istnieje, używając mysqli_num_rows().
Następnie, jeśli wiersz istnieje, możesz uruchomić zapytanie UPDATE i użyć mysqli_affected_rows().
[EDYTUJ]
...Zaproponuję potencjalną alternatywę dla każdego, kto szuka jednego połączenia. Nie wiem, czy jesteś zainteresowany wstawianiem wkładek, czy tylko aktualizacjami. Poniżej trochę do myślenia:
Od górnego komentarza @ http://php.net/manual/en/ mysqli.affected-rows.php :
W zapytaniach „INSERT INTO ON DUPLICATE KEY UPDATE”, chociaż można oczekiwać, że Improve_rows zwróci tylko 0 lub 1 na wiersz w przypadku pomyślnych zapytań, w rzeczywistości może zwrócić 2.
Z podręcznika Mysql:„Dzięki ON DUPLICATE KEY UPDATE wartość wierszy, których dotyczy problem, na wiersz wynosi 1, jeśli wiersz jest wstawiany jako nowy, i 2, jeśli istniejący wiersz jest aktualizowany”.
Zobacz:http://dev.mysql.com /doc/refman/5.0/en/insert-on-duplicate.html
Oto podział sum na wiersz :
+0:wiersz nie został zaktualizowany lub wstawiony (prawdopodobnie dlatego, że wiersz już istniał, ale żadne wartości pól nie zostały faktycznie zmienione podczas UPDATE)
+1:wstawiono wiersz
+2:zaktualizowano wiersz
Czy możesz to dostosować do swoich potrzeb?