Avatar billede aslan Nybegynder
28. juni 2004 - 11:29 Der 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?
Avatar billede kasper.h Nybegynder
28. juni 2004 - 11:36 #1
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 ..."
Avatar billede aslan Nybegynder
28. juni 2004 - 12:03 #2
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...
Avatar billede dennismp Nybegynder
28. juni 2004 - 12:18 #3
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
Avatar billede aslan Nybegynder
28. juni 2004 - 13:10 #4
Jamen kan det lade sig gøre i rent sql eller skal jeg bruge et programmeringsprog til at hjælpe mig med det?
Avatar billede dennismp Nybegynder
28. juni 2004 - 13:25 #5
Med replace kan du gøre det uden et programmeringssprog.
Avatar billede aslan Nybegynder
08. juli 2004 - 09:24 #6
Bare giv mig et svar dennis hvis du vil have point...
Avatar billede dennismp Nybegynder
08. juli 2004 - 13:53 #7
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester