Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql erstellt eine neue Zeile, anstatt die vorhandene zu aktualisieren

Sie können direkt UPDATE wenn der Wert bereits existiert oder INSERT falls es nicht existiert, mit INSERT...ON DUPLICATE KEY UPDATE

Aber zuerst müssen Sie eine eindeutige Spalte angeben,

ALTER TABLE user_account ADD CONSTRAINT tb_uq UNIQUE (id_user)

wenn Spalte ID_USER bereits ein Primärschlüssel ist, überspringen Sie die erste Methode. Nachdem es implementiert wurde, können Sie nun die folgende Syntax verwenden

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

Als Nebenbemerkung ist die Abfrage mit SQL Injection angreifbar wenn der Wert (s ) der Variablen kam von außen. Bitte werfen Sie einen Blick auf den folgenden Artikel, um zu erfahren, wie Sie dies verhindern können. Durch die Verwendung von PreparedStatements Sie können die Verwendung von einfachen Anführungszeichen um Werte loswerden.