sql >> Databáze >  >> RDS >> Mysql

mysql vytvoří nový řádek namísto aktualizace existujícího

Můžete přímo UPDATE pokud hodnota již existuje, nebo INSERT pokud neexistuje, pomocí INSERT...ON DUPLICATE KEY UPDATE

Nejprve však musíte určit jedinečný sloupec,

ALTER TABLE user_account ADD CONSTRAINT tb_uq UNIQUE (id_user)

pokud sloupec ID_USER je již primární klíč, pak přeskočte první metodu. Poté, co byla implementována, můžete nyní používat následující syntaxi

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

Jako vedlejší poznámka je dotaz zranitelný pomocí SQL Injection pokud je hodnota (s ) proměnných pochází zvenčí. Podívejte se prosím na níže uvedený článek, kde se dozvíte, jak tomu zabránit. Pomocí PreparedStatements můžete se zbavit používání jednoduchých uvozovek kolem hodnot.




  1. Snažím se porozumět Nelze najít FULLTEXT index odpovídající chybě seznamu sloupců

  2. Jak mohu uložit hodnoty s více možnostmi v tabulce SQL? Jak by měl být stůl?

  3. Datový typ/struktura pro uložení posunu časového pásma v MySQL

  4. Java MySQL Update Query