28. juni 2004 - 11:29Der er
5 kommentarer og 2 løsninger
Hvis mobil eksistere opdater ellers indsæt ny række?
Min opgave lyder på at jeg skal have sat rækker i mysql, men hvis der allerede eksistere en række med samme mobilnr som jeg er ved at indsætte skal den opdater den eksisterende række istedet for at indsætte en ny. Kan det lade sig gøre i mysql?
hvis du har mobilnummeret som primary key, kan du lave "REPLACE INTO tabel (mobilnummer,...) VALUES ('$mobilnummer',...)"
ellers skal du lave 2 queries, f.eks "SELECT mobilnummer FROM tabel WHERE mobilnummer = '$mobilnummer'" hvis den finder noget, så "UPDATE tabel SET mobilnummer = '$mobilnummer', ... WHERE mobilnummer = '$mobilnummer'" hvis den ikke finder noget "INSERT INTO tabel ..."
Tak kasper men hvis jeg f,eks først indsætter disse data i en tabel:
insert into cust_sonofon_x(mobile,timestamp,sonofon_store,projekt_polle) select mobile, optin as timestamp,info1ans as sonofon_store,'1' from cust_sonofon_polle_users where optin is not null
Og derefter køre replace tingen:
replace into cust_sonofon_x(mobile,timestamp,projekt_em) select mobile, timestamp,'1' from cust_sonofon_optin
Så sætter replace sql'en felterne sonofon_store og projekt_polle tomme på de felter den opdater. Er der en måde jeg kan undgå dette? Ellers virker det...
Du skal angive alle felter ved replace. Hvis du kan det, så kan du helt fjerne din insert. (replace laver "insert" hvis primær nøglen ikke findes, og update hvis den findes)
Hvis du kun vil opdaterer nogle felter, så skal du bruge update istedet.
fx:
primær nøgle på mobilnummer.. lav insert, hvis dette fejler (pga nøglen) så lav update
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.