Mysql
 sql >> база данни >  >> RDS >> Mysql

Правете разлика между „няма засегнати редове“ и редове, успешно АКТУАЛИЗИРАНИ – до една и съща стойност (MySQL и PHP)

Едно просто решение би било две заявки.

Първо изпълнете заявка SELECT, за да проверите дали редът съществува, като използвате mysqli_num_rows().

След това, ако редът съществува, можете да изпълните заявката UPDATE и да използвате mysqli_affected_rows().

[РЕДАКТИРАНЕ]

...Ще предложа потенциална алтернатива за всеки, който търси едно обаждане. Не знам дали се интересувате от вмъкване или чисто актуализации. По-долу има малко храна за размисъл:

От горния коментар @ http://php.net/manual/en/ mysqli.affected-rows.php :

При заявки „INSERT INTO ON ON DUPLICATE KEY UPDATE“, въпреки че може да се очаква effected_rows да връща само 0 или 1 на ред при успешни заявки, всъщност може да върне 2.

От ръководството на Mysql:„С АКТУАЛИЗИРАНЕ НА ДУБЛИРАН КЛЮЧ, стойността на засегнатите редове на ред е 1, ако редът е вмъкнат като нов ред и 2, ако се актуализира съществуващ ред.

Вижте:http://dev.mysql.com /doc/refman/5.0/en/insert-on-duplicate.html

Ето разбивката на сумата на ред :

+0:​​ред не е актуализиран или вмъкнат (вероятно защото редът вече е съществувал, но стойностите на полето всъщност не са променени по време на АКТУАЛИЗИРАНЕТО)

+1:беше вмъкнат ред

+2:ред беше актуализиран

Можете ли да направите това да отговаря на вашите нужди?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на MySQL с Oracle Heterogeneous Services

  2. Как да определя максималния размер на транзакцията в MySQL?

  3. Управление на потребителски акаунти, роли, разрешения, удостоверяване на PHP и MySQL

  4. Не може да се свърже с базата данни след известно време на внедряване на сървъра

  5. Вмъкване на стойности в квадратчетата за отметка в базата данни