Avatar billede flemseras Nybegynder
18. august 2004 - 11:01 Der er 9 kommentarer og
1 løsning

Dobbelt forspørgsel

Hejsa..

Jeg har en tabel hvor der indgår "fornavn" og "efternavn". Nu vil jeg gerne have at der bliver tjekket (via PHP) om fornavn OG efternavn er optaget ( i samme række naturligvis )

Der skal jeg vel bruge en slags dobbelt forspørgsel, der både chekker i kolonnen "fornavn" OG "efternavn" samt chekker om de står i samme række ??

Jeg er rimeligt ny i MySql/PHP, så en evt. løsning må gerne være grundigt forklaret :-)
Avatar billede arne_v Ekspert
18. august 2004 - 11:03 #1
CREATE UNIQUE INDEX ON tabelnavn(fornavn,efternavn);

så får du SQL fejl når man forsøger at indsætte et duplikat.

Meget bedre end en SELECT query hvis der er flere samtidige brugere !
Avatar billede boris Mester
18. august 2004 - 11:08 #2
Og hvad nu hvis der er to som hedder Jørgen Jensen eller Susanne Petersen?
Er det "lovligt" at diskriminere folk, fordi de hedder det samme?
Det ville jeg til hvertifald ikke finde mig i. ;-)
Avatar billede arne_v Ekspert
18. august 2004 - 11:11 #3
Svaret på det du spørger om er:

SELECT * FROM tabelnavn WHERE fornavn='xxxx' AND efternavn='yyyy'

og så teste på om der er nogen rækker.

Evt.

SELECT COUNT(*) AS n FROM tabelnavn WHERE fornavn='xxxx' AND efternavn='yyyy'

og teste på om n er 0.
Avatar billede arne_v Ekspert
18. august 2004 - 11:11 #4
boris>

:-)
Avatar billede arne_v Ekspert
18. august 2004 - 11:12 #5
Men vælkg det unikke index. Det er den rigtige løsning.
Avatar billede flemseras Nybegynder
18. august 2004 - 15:33 #6
Ok, tusind tak, virker perfekt :-). Har lige et tillægsspørgsmål.. er der nogen måde hvor man kan "customize" den fejlmeddelse der kommer når MySql returnere at der er en unik entry ? Evt. sende brugeren tilbage til siden ?
Avatar billede arne_v Ekspert
18. august 2004 - 15:46 #7
Den må du kunne fange i PHP.
Avatar billede arne_v Ekspert
18. august 2004 - 15:48 #8
Hvis du undlader en "or die" og tester på mysql_query resultatet må du kune fange den.

Hvis mysql_query returner true så kan du teste på  mysql_affected_rows.
Avatar billede flemseras Nybegynder
18. august 2004 - 15:48 #9
Ok, jeg prøver at sende den derover :-) Tak for hjælpen Arne..Smider du et svar ?
Avatar billede arne_v Ekspert
18. august 2004 - 15:48 #10
Og et svar
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