Ankündigung

Einklappen
Keine Ankündigung bisher.

INSERT....Syntax Fehler

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • INSERT....Syntax Fehler

    Versuche gerade ein Login-Skript zu schreiben. Habe aber beim Insert durch error eine Syntax-Fehler ausgabe: Sehe einfach keinen Fehler...


    if($_POST['do'] == "register")
    {
    $user= $_POST['user'];
    $pass= $_POST['pass'];
    $email= $_POST['email'];
    $id = session_id();
    echo $id ;
    $sql = "INSERT INTO 'user'('user','pass','email','id') VALUES ('$user','$pass','$email','$id')";
    $res= mysql_query($sql) or die ( mysql_error());
    $nachricht = "Zur Aktivierung Ihres User-Accounts bitte folgenden Link klicken: \n".LINK. "index.php?do=registrieren&id=$id";
    mail($email,"REGISTRIERUNG".MAILTITLE,$nachricht," From:Orlo<".EMAIL.">");
    }


    Folgende Fehlermeldung:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''user'('user','pass','email','id') VALUES ('XXXX',XXXXXXX','myemail' at line 1


    nach myemail kommt ein @, liegt es vieleicht daran ?? Übergibt ja logischerweise ein E-Mail Adresse, aber das sollte ja kein Problem sein, oder ??? Wäre dankbar für Hilfe...thx
    www.styleschmiede.de


  • #2
    i'm not sure, aber ich denke es liegt an deinen ' ' '... sieht mir irgendwie nicht ganz Konform aus... ist aber nur aufs Blaue geraten

    Kommentar


    • #3
      Das müsste so stimmen, rein von der Syntax her....zumindest kann ich keinen Fehler entdecken, is wirklich scheisse...
      www.styleschmiede.de

      Kommentar


      • #4
        <?php

        if($_POST['do'] == "register")
        {
        $user= $_POST['user'];
        $pass= $_POST['pass'];
        $email= $_POST['email'];
        $id = session_id();
        echo $id ;
        $sql = "INSERT INTO 'user'('user','pass','email','id') VALUES ('$user','$pass','$email','$id')";
        $res= mysql_query($sql) or die ( mysql_error());
        $nachricht = "Zur Aktivierung Ihres User-Accounts bitte folgenden Link klicken: \n".LINK. "index.php?do=registrieren&id=$id";
        mail($email,"REGISTRIERUNG".MAILTITLE,$nachricht," From:Orlo<".EMAIL.">");
        }

        ?>
        besser lesbar
        www.styleschmiede.de

        Kommentar


        • #5
          PHP-Code:
          <?php
           
           
          if($_POST['do'] == "register")
                   {
                           
          $user$_POST['user'];
                           
          $pass$_POST['pass'];
                           
          $email$_POST['email'];
                           
          $id session_id();
                           echo 
          $id ;
                           
          $sql "INSERT INTO 'user'('user','pass','email','id') VALUES ('$user','$pass','$email','$id')"// hier sollte der Fehler stecken
                           
          $resmysql_query($sql) or die ( mysql_error());
           
          $nachricht "Zur Aktivierung Ihres User-Accounts bitte folgenden Link klicken: \n".LINK"index.php?do=registrieren&id=$id";
                           
          mail($email,"REGISTRIERUNG".MAILTITLE,$nachricht,"  From:Orlo<".EMAIL.">");
                   }
           
           
          ?>
          So isses noch besser lesbar -> Button "PHP"

          Sind die Variablen gefüllt?

          Kommentar


          • #6
            ja, variablen werden vom user gefüllt, zeigt er auch an bei der Fehlermeldung...
            www.styleschmiede.de

            Kommentar


            • #7
              Hast du es mal ohne @ probiert? Btw, meinstd u nicht das es ein kleines riskio ist, den POST 1:1 zu übernehmen?

              Kommentar


              • #8
                You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''user','pass','email','id') VALUES ('Orlando','blabla','blibli','444e043e7766dc8' at line 1

                gleicher Fehler, bricht nur die Fehlerausgabe bei @ ab, wenn ich eins drin hab, ansonsten ändert sich leider nichts. Da ich die Mail-Adresse als Text in der Db speichere, dürfte das sowieso keine Probleme geben. Verdammt, ich scheitere an einem Login-Skript
                www.styleschmiede.de

                Kommentar


                • #9
                  Das wird irgendeine Kleinigkeit sein NP wir haben alle mal klein angefangen. Gleich kommt hier bestimmt ein MySQL Spezi und sagt: " ist doch klar...."

                  Werds mal eben testen

                  Kommentar


                  • #10
                    Probiers mal damit:
                    PHP-Code:
                    $sql 'INSERT INTO `user` (`user`, `pass`, `email`, `id`) 
                              VALUES (\''
                    .$user.'\', \''.$pass.'\', \''.$email.'\', \''.$id.'\', );'
                    ist nur wild drauf losgetippt. ohne check

                    Kommentar


                    • #11
                      Einfache Anführungszeichen dürfen in SQL-Queries nur als Begrenzung von Strings verwendet werden, nicht aber zur Kennzeichnung von Tabellen- und Spalten-Namen. Dafür können und dürfen nur die von drieling vorgeschlagenen Hochkommata verwendet werden.

                      @drieling: Ich würde einen SQL-Query immer mit doppelten Anführungszeichen begrenzen, dann muss man nicht so viel escapen.

                      Das die einfachen Anführungszeichen bei den Spalten-Namen falsch sind, kann man ja aus der Rückgabe von mysql_error() lesen. mysql_error() setzt die Ausgabe des "near" immer beim Zeichen nach dem Fehler an (warum das so ist, weiss keiner so genau ^^).... Versuchs am Besten so:
                      PHP-Code:
                      $sql "INSERT INTO user (user,pass,email,id) VALUES ('".mysql_real_escape_string($user)."','".mysql_real_escape_string($pass)."','".mysql_real_escape_string($email)."','".mysql_real_escape_string($id)."')"
                      Die Funktion mysql_real_escape_string() schützt deine Datenbank vor SQL-Injections (einfach mal bei Google eingeben und sich schlau machen).

                      Kommentar


                      • #12
                        Kenne Sql-Injections und finde den Tip sehr gut. Funtioniert auch was du gepostet hast. EinKumpel hat sich meinen Code angesehen und hat mal einiges an Klammern weggelöscht...

                        PHP-Code:
                        if($_POST['do'] == "register")
                                {
                                        
                        $user$_POST['user'];
                                        
                        $pass$_POST['pass'];
                                        
                        $email$_POST['email'];
                                        
                        $id session_id();
                                        echo 
                        $id // Kontrolle 
                                        
                        $sql "INSERT INTO ".LOGINDB."(user,pass,email,id) VALUES ('$user','$pass','$email','$id')";

                                } 
                        So gehts, danke auch allen anderen die geholfen haben...
                        www.styleschmiede.de

                        Kommentar


                        • #13
                          um felder/tabellen müssen ` statt ', das ist der Fehler

                          Kommentar


                          • #14
                            meinste

                            Weiss nich ob das auch geht, aber ' hat eigentlich immer funktioniert. Der letzte Code den ich gepostet habe ist der funktionierende....
                            thx
                            www.styleschmiede.de

                            Kommentar


                            • #15
                              Ich hab den gleichen Fehler auch gehabt. Versuch mal folgendes:
                              PHP-Code:
                              $sql "INSERT INTO user
                                            (user,
                                             pass,
                                             email,
                                             id)
                                        VALUES
                                             ('
                              $user', 
                                             md5('
                              $pass'),
                                             '
                              $email',
                                             '
                              $id');"
                              So, nur mit anderen Tabbelennamen/Spaltennamen sieht mein Insert bei meinem registrierungsscript aus und es funktioniert.
                              Ansonsten überprüf mal ob die Tabellen/Spaltenbezeich ungen richtig geschrieben sind. Glaub zwar nciht das es daran liegt aber sicher ist sicher.
                              .visit » Tolga-Tanik.de
                              .visit » TolgaTanikFoto @ Facebook
                              .visit » Tolga Tanik Fotografie @ YouTube

                              Kommentar

                              Lädt...
                              X