Avatar billede petan Nybegynder
16. januar 2005 - 15:23 Der er 11 kommentarer og
1 løsning

Fejl i sql sætning

Hej

Jeg bruger nedenstående kode i forbindelse med at system, hvor brugere kan logge ind, og evt. ændre deres brugeroplysniger. Koden skal tjekke om der er andre brugere der bruger en indtastet mailadresse.

$rs = mysql_query("SELECT * from kundeTabel WHERE brugerNavn = '$mail' AND kundeId <> '$kundeId'");
        if (mysql_num_rows($rs) == 1)
        {
            echo "<script type=\"text/javascript\">alert(\"Denne e-mail adresse anvendes i forvejen!\");history.go(-1)</script>"; 
            exit;
        }

Når jeg laver denne forespørgsel returnerer den 21 i $rs, selvom der ikke er 21 der både har samme kundeId og den indtastede mailadresse. er der nogen der kan se hvad jeg gør forkert.
Avatar billede antikat Nybegynder
16. januar 2005 - 15:26 #1
$rs = mysql_query("SELECT * from kundeTabel WHERE brugerNavn = '$mail' AND kundeId <> '$kundeId'");
        $num = mysql_num_rows($rs);
        if ($num > 0)
        {
            echo "<script type=\"text/javascript\">alert(\"Denne e-mail adresse anvendes i forvejen!\");history.go(-1)</script>"; 
            exit;
        }

Prøv det.
Avatar billede petan Nybegynder
16. januar 2005 - 15:29 #2
Det ændrer ikke noget. Jeg kan heller ikke se at der skulle være nogen forskel på det jeg gør og så det du foreslår.
Avatar billede antikat Nybegynder
16. januar 2005 - 15:30 #3
du siger at den skriver 21, når der kun er 1?
Avatar billede petan Nybegynder
16. januar 2005 - 15:31 #4
ja
Avatar billede antikat Nybegynder
16. januar 2005 - 15:31 #5
er du sikker på man godt kan bruge kommandoen <> i sql sætningen?
Avatar billede jakoba Nybegynder
16. januar 2005 - 15:32 #6
prøv at udskrive de 21 rækker så vi kan se om det virkelig passer
Avatar billede antikat Nybegynder
16. januar 2005 - 15:33 #7
og hvorfor bruger du iden i det?. det er da nok bare at bruge:

SQL: "Select * from Kundetabel where email='$email'"
Avatar billede petan Nybegynder
16. januar 2005 - 15:34 #8
antikat-> nej, for brugeren skal have mulighed for at opdatere en formular, hvor han har rettet nogle felter, uden at have rettet sin mail adresse.
Avatar billede jakoba Nybegynder
16. januar 2005 - 15:35 #9
>> antikat
  Ja, '<>' er godt nok. det er faktisk standard operatoren for ikke-lig-med i SQL (arvet fra pascal). '!=' er en fix tilføjet i nogle få SQL implementeringer af hensyn til C programmører der ikke ku hitte ud af det.
Avatar billede petan Nybegynder
16. januar 2005 - 15:36 #10
Fejlen er fundet. Problemet bestod i at der faktisk var flere med samme brugerNavn, da jeg havde lavet en updata sætning, men havde glemt at lave en WHERE hvilket gjorde at de alle fik samme brugerNavn.
Avatar billede antikat Nybegynder
16. januar 2005 - 15:39 #11
oki...
Avatar billede petan Nybegynder
16. januar 2005 - 15:42 #12
lukker.
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