Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Rozróżnij między „brak wierszy dotkniętych” a wierszami pomyślnie ZAKTUALIZOWANYMI — do tej samej wartości (MySQL i PHP)

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?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sumuj godziny od śledzenia czasu do kalendarza według dnia

  2. EF Core `update-database` w MySql kończy się niepowodzeniem z `__EFMigrationsHistory' nie istnieje`

  3. Jak dodać sumę jako ostatni wiersz w moim sql?

  4. Samouczek MySQL — konfiguracja i zarządzanie SSL na serwerze MySQL

  5. MySQL 8 ignoruje długości całkowite