Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql crée une nouvelle ligne au lieu de mettre à jour l'existant

Vous pouvez directement UPDATE si la valeur existe déjà ou INSERT s'il n'existe pas en utilisant INSERT...ON DUPLICATE KEY UPDATE

Mais vous devez d'abord spécifier une colonne unique,

ALTER TABLE user_account ADD CONSTRAINT tb_uq UNIQUE (id_user)

si colonne ID_USER est déjà une clé primaire, ignorez la première méthode. Après son implémentation, vous pouvez maintenant utiliser la syntaxe suivante

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

En passant, la requête est vulnérable avec SQL Injection si la valeur(s ) des variables provenaient de l'extérieur. Veuillez consulter l'article ci-dessous pour savoir comment l'éviter. En utilisant PreparedStatements vous pouvez vous débarrasser de l'utilisation de guillemets simples autour des valeurs.