Schreiben in Datenbank

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

  • Schreiben in Datenbank

    Hallo zusammen,

    Ich habe ein Login-Script (das überigens jetzt funktioniert ) und zwei Datenbanken. Beim Registrieren möchte ich jetzt, dass es in der DB "user" die Daten einschreibt und dann soll ein neuer Eintrag in der DB "kilometer" mit der id (bei "user" ist diese Zeile ein autoincrement) der "user" Datenbank erfolgen.

    ich hab das so geschrieben:
    PHP-Code:
    $sql 'INSERT INTO user SET user="'.$username.'", 
    pass="'
    .$pass.'", name="'.$name.'", vorname="'.$vorname.'", 
    adresse="'
    .$adresse.'", plz="'.$plz.'", ort="'.$ort.'", mail="'.$mail.'", 
    phone="'
    .$phone.'"'
    und dann in einem neuen php:
    PHP-Code:
    $sqla 'SELECT id FROM user WHERE user="'.$username.'"';
    $resa send_sql($db,$sqla);
    $sqlb 'INSERT INTO kilometer SET id="'.$id.'"';
    $resb send_sql($db$sqlb); 
    Nun gibt mir das Ganze einen Fehler aus:
    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 '' at line 1
    Das versteh ich nicht wirklich! Kann mir jemand helfen?
    "Wer arbeitet, macht Fehler. Wer viel arbeitet, macht mehr Fehler. Nur
    wer die Hände in den Schoß legt, macht gar keine Fehler."

    Friedrich Alfred Krupp

  • #2
    Re: Schreiben in Datenbank

    übergibst du deiner funktion send_sql denn auch die richtigen parameter?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      wie sieht die Funktion send_sql aus? wasfür DBMS?

      Kommentar


      • #4
        Zuerst einmal hab ich noch einen Fehler in meinem Text entdeckt, ich meinte natürlich "zwei Tabellen" und nicht "zwei Datenbanken". Die Tabellen sind in der selben DB.
        Ja das mit dem Parametern sollte stimmen, da die erste Zeile, dh das Einschreiben in die "user"-Tabelle erfolgreich ist (im phpMyAdmin nachgeschaut). Es könnte vielleicht an der ID liegen. Die ist ja eine Zahl und in der Tabelle als INT abgelegt
        "Wer arbeitet, macht Fehler. Wer viel arbeitet, macht mehr Fehler. Nur
        wer die Hände in den Schoß legt, macht gar keine Fehler."

        Friedrich Alfred Krupp

        Kommentar


        • #5
          Original geschrieben von phpnixchecker
          Die ist ja eine Zahl und in der Tabelle als INT abgelegt
          was ist für dich INT?

          baut doch mal mysql_error in deiner Funktion ein, dann bekommst du auch ausführliche Fehlermeldung.

          Kommentar


          • #6
            INT= Integer, damit meine ich die Vorgabe in der Tabelle. Ich brauch ja für eine ID aus zahlen keinen VarChar zu setzen.

            ich hab noch einen Fehler entdeckt, aber jetzt liefert mir die Ausgabe:


            Duplicate entry '0' for key 1
            Das heisst, jetzt schreibt es in die Tabelle "kilometer" als id "0" rein.



            PHP-Code:
            $sqla 'SELECT id FROM user WHERE user="'.$username.'"';
            $resa send_sql($db,$sqla);
            $id $resa['id'];
            $sqlb 'INSERT INTO kilometer SET id="'.$id.'"';
            $resb send_sql($db$sqlb); 
            Irgendwo bei der Abfrage um die ID muss der Fehler sein, aber ich komm nicht drauf.
            "Wer arbeitet, macht Fehler. Wer viel arbeitet, macht mehr Fehler. Nur
            wer die Hände in den Schoß legt, macht gar keine Fehler."

            Friedrich Alfred Krupp

            Kommentar


            • #7
              1. wenn es eine Zahl ist, warum packst du in '' ein?
              2. die Fehlermeldung ist eindeutig: Duplicate entry '0' for key 1, was willst du denn noch
              3. da die Funktion send_sql ein Staatsgeheimnis ist und meine Glaskugel grad in Reparatur ist, habe ich keine Lust mehr zu raten, also viel Spaß beim Problembeheben.

              Kommentar


              • #8
                ja lol, send_sql hab ich in meiner functions.php-Datei halt eingebaut. Was willst du denn darüber wissen?
                PHP-Code:
                function send_sql($db$sql) {
                   if (! 
                $res=mysql_db_query($db$sql)) {
                   echo 
                mysql_error();
                exit;
                   }
                   return 
                $res;
                 } 
                Damit muss ich nicht dauernd mysql_error() schreiben. Ist doch nicht wirklich so interessant?!
                "Wer arbeitet, macht Fehler. Wer viel arbeitet, macht mehr Fehler. Nur
                wer die Hände in den Schoß legt, macht gar keine Fehler."

                Friedrich Alfred Krupp

                Kommentar


                • #9
                  und wenn du deine insert so schreibst?
                  was passiert dann?
                  PHP-Code:
                  $sql="INSERT INTO user (user, pass, name, vorname, adresse, plz, ort, mail, phone) 
                  VALUES ('
                  $user', '$pass', '$name', '$vorname', '$adresse', '$plz', '$ort', '$mail', '$phone')";
                  mysql_query($sql); 
                  Die wenigsten Fehltritte begeht man mit den Füssen.

                  Kommentar


                  • #10
                    Hat das Auslesen aus der Datenbank denn schon jemals funktioniert?

                    mysql_db_query ist laut php.net veraltet, statt dessen sollten mysql_select_db und mysql_query genutzt werden. Abgesehen davon macht mysql_db_query wahrscheinlich nicht mehr als diese beiden funktionen, d. h. du brauchst noch mysql_fetch_assoc um mit dem Ergebnis weitermachen zu können.

                    Wenn es dir nur um die per auto_increment erzeugte ID geht, hilft dir aber bestimmt auch mysql_insert_id
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Original geschrieben von phpnixchecker
                      PHP-Code:
                      $sqla 'SELECT id FROM user WHERE user="'.$username.'"';
                      $resa send_sql($db,$sqla);
                      $id $resa['id']; 
                      das übliche problem, keine ahnung wie man mit abfrageergebnissen arbeitet ...

                      $resa enthält lediglich die ergebniskennung (engl. resource id), aber noch keinen datensatz.
                      also ist der zugriff auf $resa['id'] natürlich vollkommen unsinnig.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Danke an alle, die hier einen Beitrag geschrieben haben. @wahsaga: Stimmt, typischer Anfängerfehler, aber hasste mal auf meinen Status geschaut?! Jetzt funktionierts!!!


                        Hier noch der Quellcode, für die, die das selbe Problem haben:
                        PHP-Code:
                        $sqla 'SELECT id FROM user WHERE user="'.$username.'"';
                        $querya send_sql($db,$sqla);
                        $resa mysql_fetch_array ($querya);
                        $id $resa['id'];
                        echo 
                        "$id";
                        $sqlb 'INSERT INTO kilometer SET id='.$id.'';
                        $resb send_sql($db$sqlb); 
                        "Wer arbeitet, macht Fehler. Wer viel arbeitet, macht mehr Fehler. Nur
                        wer die Hände in den Schoß legt, macht gar keine Fehler."

                        Friedrich Alfred Krupp

                        Kommentar

                        Lädt...
                        X