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

mysql tworzy nowy wiersz zamiast aktualizować istniejący

Możesz bezpośrednio UPDATE jeśli wartość już istnieje lub INSERT jeśli nie istnieje, używając INSERT...ON DUPLICATE KEY UPDATE

Ale najpierw musisz określić unikalną kolumnę,

ALTER TABLE user_account ADD CONSTRAINT tb_uq UNIQUE (id_user)

jeśli kolumna ID_USER jest już kluczem podstawowym, a następnie pomiń pierwszą metodę. Po zaimplementowaniu możesz teraz używać następującej składni

INSERT INTO user_account (id_user, bio) 
VALUES($id, '$bio')
ON DUPLICATE KEY UPDATE bio = '$bio';

Na marginesie, zapytanie jest podatne na SQL Injection jeśli wartość (s ) zmiennych pochodziło z zewnątrz. Zapoznaj się z poniższym artykułem, aby dowiedzieć się, jak temu zapobiec. Używając PreparedStatements możesz pozbyć się pojedynczych cudzysłowów wokół wartości.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wywołanie procedury składowanej przy użyciu ADODB w PHP

  2. Replikacja MySQL na pojedynczym serwerze

  3. Błąd jdbc do MYSQL:nie znaleziono odpowiedniego sterownika dla jdbc:mysql://localhost:3306/test?user='root'&password=''

  4. Symfony 2:INNER JOIN na niepowiązanej tabeli z konstruktorem zapytań doktryny

  5. sudo mniam zainstaluj konflikt php55w-mysqlnd