sql >> Databasteknik >  >> RDS >> Mysql

mysql skapar en ny rad istället för att uppdatera befintliga

Du kan direkt UPDATE om värdet redan finns eller INSERT om det inte finns genom att använda INSERT...ON DUPLICATE KEY UPDATE

Men först måste du ange en unik kolumn,

ALTER TABLE user_account ADD CONSTRAINT tb_uq UNIQUE (id_user)

om kolumnen ID_USER är redan en primärnyckel, hoppa över den första metoden. Efter att det har implementerats kan du nu använda följande syntax

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

Som en sidanot är frågan sårbar med SQL Injection om värdet (s ) av variablerna kom utifrån. Ta en titt på artikeln nedan för att lära dig hur du förhindrar det. Genom att använda PreparedStatements du kan bli av med att använda enstaka citattecken runt värden.




  1. 1064-fel i CREATE TABLE ... TYPE=MYISAM

  2. ADDDATE() Exempel – MySQL

  3. Logga till fil via PHP eller logga till MySQL-databas - vilket är snabbare?

  4. Hur man använder PL/SQL Bulk Collect-klausul med FETCH INTO-utlåtande