Mysql
 sql >> Database >  >> RDS >> Mysql

mysql crea una nuova riga invece di aggiornare quella esistente

Puoi direttamente UPDATE se il valore è già esistente o INSERT se non esiste utilizzando INSERT...ON DUPLICATE KEY UPDATE

Ma prima devi specificare una colonna univoca,

ALTER TABLE user_account ADD CONSTRAINT tb_uq UNIQUE (id_user)

se colonna ID_USER è già una chiave primaria, quindi salta il primo metodo. Dopo che è stato implementato, ora puoi utilizzare la seguente sintassi

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

Come nota a margine, la query è vulnerabile con SQL Injection se il valore(s ) delle variabili proveniva dall'esterno. Si prega di dare un'occhiata all'articolo qui sotto per sapere come prevenirlo. Usando PreparedStatements puoi sbarazzarti dell'uso di virgolette singole attorno ai valori.