26. oktober 2007 - 14:11Der er
14 kommentarer og 1 løsning
Problemer med unikke randomnumre
Hej. Jeg har et system, hvor jeg opretter nogle lejeaftaler. For hver lejeaftale oprettes en post i Mysql, og på hver post gemmes et unikt nr. som anvendes til unikke URL. Nu har jeg været udsat for, at det samme 20-cifrede nr. er oprettet til flere poster. Det burde vel ske 1 gang ud af mange milliarder. Der må derfor været noget galt i koden: Håber der er en, som vil kigge på koden. Jeg er godt klar over, at jeg blot kan lave et tjek i MySQL om koden er oprettet i forvejen, og hvis ja, så må den generere en ny: Koden ser sådan her ud:
Jeg forstår det ikke helt, men jeg løser det vel bare med at lave et tjek i min MySQL om nummeret er genereret i forvejen: Jeg er dog lidt usikker på hvordan. Det skal vel laves med en While-statement.... Håber på lidt hjælp. Vil mene, at denne kode, tjekker om der er enslydende i forvejen: $sql = "SELECT * FROM tabel WHERE xid= '".$raw."'"; $res = database($sql); if (mysql_num_rows($res) == 0) { //så er nummeret OK - ellers skal den prøve igen.
Men hvordan opsætter jeg while eller hvad der nu skal til, for at den kører løkken igen.
dkfire: Det er jeg opmærksom på. Men jeg vil hellere have, at systemet ikke stopper, fordi der kommer en MySQL-fejl, hvorfor jeg også vil lave et tjek om nummeret eksisterer i forvejen, og hvis ja - så dan et nyt nr.
Nielle: Du har lige hjulpet mig i en anden tråd, og jeg kan se i de eksisterende poster, at samme nummer optræder 3 gange. Der er altså tale om ét bestemt nr.
Så har jeg lige et spørgsmål til den kode, du foreslår ovenfor. Kan jeg risikere, at systemet kommer til at køre i ring, fordi den vil generere den samme kode?
En alternativ måde at løse problemet på, er faktisk at gøre feltet unikt og så have en løkke som prøver igen og igen indtil at der ikke kommer en SQL fejl.
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.