Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

mysql cria uma nova linha em vez de atualizar existente


Você pode diretamente UPDATE se o valor já existe ou INSERT se não existir usando INSERT...ON DUPLICATE KEY UPDATE

Mas primeiro você precisa especificar uma coluna única,
ALTER TABLE user_account ADD CONSTRAINT tb_uq UNIQUE (id_user)

if coluna ID_USER já é uma chave primária, então pule o primeiro método. Depois de implementado, agora você pode usar a seguinte sintaxe
INSERT INTO user_account (id_user, bio) 
VALUES($id, '$bio')
ON DUPLICATE KEY UPDATE bio = '$bio';

Como nota lateral, a consulta é vulnerável com SQL Injection se o valor(s ) das variáveis ​​veio de fora. Por favor, dê uma olhada no artigo abaixo para saber como evitar isso. Usando PreparedStatements você pode se livrar de usar aspas simples em torno de valores.