Avatar billede hni Nybegynder
12. juli 2010 - 12:34 Der er 7 kommentarer

INSERT INTO WHERE NOT EXISTS

Hej.
Jeg prøver at indsætte noget data i min SQL database, men kun hvis det ikke eksisterer i forvejen i sidste felt.
(Det er noget der bliver checket løbende, så det må gerne eksisterer, men ikke som sidste post i databasen, da det er for at undgå dobbelt posts i databasen).

Kan ikke helt få det til at fungerer.
Har prøvet med følgende:

$sql = "INSERT INTO mylist(dato, kl, weekday, band, sang)
VALUES NOW(), '$today', '$nyugedag', '$cur_artist', '$cur_title'
WHERE NOT EXISTS (SELECT * FROM mylist WHERE sang = '$cur_artist' LIMIT 1 ORDER BY id DESC)
;";

Den skal se om det jeg nu smider ind eksisterer på den sidste post der er smidt ind i databasen.
Håber det giver mening. :-)
Avatar billede hni Nybegynder
12. juli 2010 - 12:38 #1
Går ud fra VALUES skal skiftet ud med SELECT ??
Avatar billede hni Nybegynder
12. juli 2010 - 12:59 #2
Efter at have kigget diverse sider igennem efter hjælp, så er jeg nået frem til følgende:

$sql = "INSERT INTO mylist(dato, kl, weekday, band, sang) 
values (NOW(), '$today', '$nyugedag', '$cur_artist', '$cur_title')
WHERE not exists
(SELECT * FROM mylist where sang =
'$cur_artist') LIMIT 1 ORDER BY id DESC";

Men stadig ikke noget resultat i database.. :-(
Avatar billede dmdisco Nybegynder
12. juli 2010 - 13:24 #3
hvis dit sidste felt er unikt så kan du bruge INSERT INTO ON DUPLICATE KEY UPDATE for ellers er det vel en update statement du skal have hvis du skal indsætte noget i rækker der eksistere i forvejen hvor en værdi ikke er sat?, kan dog ikke lige hitte hoved og hale i hvad det er du vil
Avatar billede hni Nybegynder
12. juli 2010 - 13:36 #4
Jeg har en XML fil som jeg checker hvert minut. Jeg trækker så  data ud fra som jeg vil have tilføjet i min database.
Men da den checker hvert minut og jeg så kan risikerer det stadig er det samme data der ligger i XML-filen, så skal den checke i min database om det eksisterer i forvejen i sidste post i databasen - hvis det ikke gør det, så skal den tilføje det til min database.

Håber det var lidt mere tydeligt forklaret? :-)
Avatar billede coderdk Praktikant
12. juli 2010 - 23:18 #5
En delt primary key og en INSERT IGNORE kan måske også gøre det?
Avatar billede esbersen Nybegynder
13. juli 2010 - 11:40 #6
Har du brugt mysql til at udføre kaldet, og set hvilken fejlmeddelelse, den giver dig?

Er det forresten bare mig, eller er man ikke nødt til at gøre noget som følgende?:
values (NOW(), '" . $today . "', '" . $nyugedag . "', '" . $cur_artist . "', '" . $cur_title . "')
Avatar billede dmdisco Nybegynder
14. juli 2010 - 10:33 #7
>esbersen
ikke når der er dobbeltqoutes uden om så kigger php strengen igennem for variabler men det er stadig en lettere læslig måde at gøre det på imo og man kommer ikke ud i problemer hvis man bruger arrays eller funktioner,
samme som at du ikke behøver at skrive mysql syntax med uppercase men det hjælper en del på læsbarheden
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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