sql >> Base de Datos >  >> RDS >> Mysql

mysql crea una nueva fila en lugar de actualizar la existente

Puedes UPDATE directamente si el valor ya existe o INSERT si no existe usando INSERT...ON DUPLICATE KEY UPDATE

Pero primero debe especificar una columna única,

ALTER TABLE user_account ADD CONSTRAINT tb_uq UNIQUE (id_user)

si la columna ID_USER ya es una clave principal, omita el primer método. Una vez que se haya implementado, ahora puede usar la siguiente sintaxis

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

Como nota al margen, la consulta es vulnerable con SQL Injection si el valor (s ) de las variables vino del exterior. Por favor, eche un vistazo al siguiente artículo para saber cómo prevenirlo. Mediante el uso de PreparedStatements puede deshacerse del uso de comillas simples alrededor de los valores.