sql >> Database >  >> RDS >> Mysql

mysql maakt een nieuwe rij aan in plaats van de bestaande bij te werken

U kunt direct UPDATE als de waarde al bestaat of INSERT als het niet bestaat, gebruik dan INSERT...ON DUPLICATE KEY UPDATE

Maar eerst moet je een unieke kolom specificeren,

ALTER TABLE user_account ADD CONSTRAINT tb_uq UNIQUE (id_user)

if kolom ID_USER al een primaire sleutel is, sla dan de eerste methode over. Nadat het is geïmplementeerd, kunt u nu de volgende syntaxis gebruiken

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

Even terzijde:de query is kwetsbaar met SQL Injection als de waarde(s ) van de variabelen kwam van buitenaf. Bekijk het onderstaande artikel om te zien hoe u dit kunt voorkomen. Door PreparedStatements . te gebruiken u kunt het gebruik van enkele aanhalingstekens rond waarden verwijderen.




  1. MYSQL - Inner Join met NA UPDATE in tabel

  2. PDO-uitzondering wordt niet gegenereerd voor triggerfouten

  3. postgresql des encrypt

  4. Hoe kan ik nul/0 resultaten opnemen in het COUNT-aggregaat?