Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL:Datensatz anlegen --> ID auslesen

Einklappen

Neue Werbung 2019

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

  • MySQL:Datensatz anlegen --> ID auslesen

    Hi Leutz,


    folgendes Problem:
    Ich möchte einen Datensatz in eine Datenbanktabelle einfügen und mit der per auto_increment erzeugten ID weiterarbeiten.


    Bsp. Tabelle
    UserID | Name | Vorname |
    1 | Mustermann | Max |


    Ich lege Nutzer Max M. neu an. Möchte dann direkt nach dem speichern des Datensatzes die ID die durch auto_increment in der Tabelle erzeugt wird einer Variabel übergeben. Wie ich einen Datensatz einfüge ist mir klar. Wie aber lese ich gleichzeitg die ID aus?


    Danke für eure Hilfe


    MfG
    Mafra


  • #2
    Hi,
    schau dir mal PHP: mysql_insert_id - Manual an...
    [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

    Kommentar


    • #3
      So:
      PHP-Code:
      $UserID mysql_insert_id(); 
      oder:
      PHP-Code:
      $query "LAST_INSERT_ID(UserID)"
      oder:
      PHP-Code:
      $query "SELECT UserID FROM users LIMIT 1 ORDER BY UserID desc"

      Kommentar


      • #4
        Danke schon mal für eure Antworten

        Frage: Kann es aber sein das mir mysql_insert_id() den falschen Wert liefert, wenn meherer Zugriffe auf die Tabelle erfolgen? Z.b. Zwei User legen sich nahezu zeitgleich an. Oder ist diese Methode eher zuverlässig?

        Kommentar


        • #5
          Einfach PHP: mysql_insert_id - Manual lesen.

          Kommentar


          • #6
            Ok das Einfügen eines Datensatzes ist doch nich so einfach.

            Ich habe mir folgendes gedacht

            PHP-Code:
            <?php

            // $_POST auslesen
            $Anrede $_POST['Anrede'];
            $Vorname $_POST['Vorname'];
            $Name $_POST['Name'];
            $Strasse $_POST['Strasse'];
            $Nr $_POST['Nr'];
            $PLZ $_POST['PLZ'];
            $Ort $_POST['Ort'];
            $Tel $_POST['Tel'];
            $Mail $_POST['Mail'];
            $AnlageDatum $_POST['AnlageDatum'];
            $Bearbeiter $_POST['Bearbeiter'];
            $Response $_POST['Response'];
            $Sperre $_POST['Sperre'];

            //Datensatz-Inhalte festlegen
            $sql_befehl "
                  INSERT INTO customer (
                            KdNr,
                            Anrede,
                            Vorname,
                            Name,
                            Strasse,
                            Nr,
                            PLZ,
                            Ort,
                            Tel,
                            Mail,
                            AnlageDatum,
                            Bearbeiter,
                            Response,
                            Sperre,
                   ) VALUES (
                            '',
                            '
            $Anrede',
                            '
            $Vorname',
                            '
            $Name',
                            '
            $Strasse',
                            '
            $Nr',
                            '
            $PLZ',
                            '
            $Ort',
                            '
            $Tel',
                            '
            $Mail',
                            '
            $AnlageDatum',
                            '
            $Bearbeiter',
                            '
            $Response',
                            '
            $Sperre',
                   )"
            ;
                   
            ?>
            So ...

            PHP-Code:
            <?php
            if ($db->query($sql_befehl)) {
            $KdID mysql_insert_id();
            echo 
            "Kunde erhaelt die KD Nr. $KDid";
            } else {
            echo 
            "Fehler";

            ?>
            Leider liefert die Mysql Anweisung false und ich bekomme nur die Ausgabe Fehler. Habe jetzt auch keinen blassen Schimmer wo schon wieder mein Anfängerfehler steckt. Bitte euch deswegen nochmal um Hilfe.

            Kommentar


            • #7
              PHP-Code:
              $result mysql_query($sql_befehl);
              if (!
              $result) {
                  die(
              'Ungültige Abfrage: ' mysql_error());

              }         
              $KdID mysql_insert_id();
              echo 
              "Kunde erhaelt die KD Nr. $KDid"

              Kommentar


              • #8
                Re

                Erst mal danke für deine Antwort.

                so die Ausgabe verblüfft doch arg. Ich habe das Script in einer lokalen Testumgebung. Also MySQL Nutzer root ohne Passwd *schähm*. Die Ausgabe:

                Code:
                Warning:  mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\Programme\xampp\htdocs\web\_DebitorenSchreiben.php on line 75
                
                Warning:  mysql_query() [function.mysql-query]: A link to the server could not be established in C:\Programme\xampp\htdocs\web\_DebitorenSchreiben.php on line 75
                Ungültige Abfrage: Access denied for user 'ODBC'@'localhost' (using password: NO)

                Kommentar


                • #9
                  Zitat von mafra Beitrag anzeigen
                  so die Ausgabe verblüfft doch arg. Ich habe das Script in einer lokalen Testumgebung. Also MySQL Nutzer root ohne Passwd *schähm*.
                  Auch wenn du kein Passwort etc. verwendest musst du dich trotzdem mit MySQL verbinden (mysql_connect) und eine Datenbank auswählen (mysql_select_db)....
                  [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                  Kommentar


                  • #10
                    Zitat von agrajag Beitrag anzeigen
                    Auch wenn du kein Passwort etc. verwendest musst du dich trotzdem mit MySQL verbinden (mysql_connect) und eine Datenbank auswählen (mysql_select_db)....
                    Das ist mir klar. Ich include die klassische dbconnect.inc.php . Aber ich prüfe das jetzt gleich mal.

                    PHP-Code:
                    <?php

                    // Datenbankverbindung

                    $db = new mysqli($server$user$passwd$dbase);

                    // Verbindung ueberpruefen

                    if (mysqli_connect_errno()) {
                        
                    printf("Verbindung fehlgeschlagen: %s\n",
                        
                    mysqli_connect_error());
                        exit();

                    ?>
                    Aber da scheint das include dann nicht zu klappen!

                    Kommentar


                    • #11
                      das ist es leider auch nicht

                      Habe das Script wie folgt abgeändert

                      PHP-Code:
                      <?php

                      // Datenbank Verbindung
                      $server 'localhost'// Datenbank Server
                      $user 'root';        // Username fuer den Datenbank Server
                      $passwd '';          // Passwort fuer den Datenbank Server
                      $dbase 'meyer' ;     // Name der Datenbank

                      // Datenbankverbinundung

                      $db = new mysqli($server$user$passwd$dbase);

                      // Verbindung ueberpruefen

                      if (mysqli_connect_errno()) {
                          
                      printf("Verbindung fehlgeschlagen: %s\n",
                          
                      mysqli_connect_error());
                          exit();


                      // $_POST auslesen
                      $Anrede $_POST['Anrede'];
                      $Vorname $_POST['Vorname'];
                      $Name $_POST['Name'];
                      $Strasse $_POST['Strasse'];
                      $Nr $_POST['Nr'];
                      $PLZ $_POST['PLZ'];
                      $Ort $_POST['Ort'];
                      $Tel $_POST['Tel'];
                      $Mail $_POST['Mail'];
                      $AnlageDatum $_POST['AnlageDatum'];
                      $Bearbeiter $_POST['Bearbeiter'];
                      $Response $_POST['Response'];
                      $Sperre $_POST['Sperre'];

                      //Datensatz-Inhalte festlegen
                      $sql_befehl "
                            INSERT INTO customer (
                                      KdNr,
                                      Anrede,
                                      Vorname,
                                      Name,
                                      Strasse,
                                      Nr,
                                      PLZ,
                                      Ort,
                                      Tel,
                                      Mail,
                                      AnlageDatum,
                                      Bearbeiter,
                                      Response,
                                      Sperre,
                             ) VALUES (
                                      '',
                                      '
                      $Anrede',
                                      '
                      $Vorname',
                                      '
                      $Name',
                                      '
                      $Strasse',
                                      '
                      $Nr',
                                      '
                      $PLZ',
                                      '
                      $Ort',
                                      '
                      $Tel',
                                      '
                      $Mail',
                                      '
                      $AnlageDatum',
                                      '
                      $Bearbeiter',
                                      '
                      $Response',
                                      '
                      $Sperre',
                             )"
                      ;
                             
                      ?>
                      und

                      PHP-Code:
                      <?php
                      $result 
                      mysql_query($sql_befehl); // Das ist Line 93
                       
                      if (!$result) {
                          die(
                      'Ungültige Abfrage: ' mysql_error());

                       }         
                       
                      $KdID mysql_insert_id();
                       echo 
                      "Kunde erhaelt die KD Nr. $KDid";   
                      ?>
                      der Fehler bleibt der gleiche

                      Code:
                      Warning:  mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\Programme\xampp\htdocs\web\_DebitorenSchreiben.php on line 93
                      
                      Warning:  mysql_query() [function.mysql-query]: A link to the server could not be established in C:\Programme\xampp\htdocs\web\_DebitorenSchreiben.php on line 93
                      Ungültige Abfrage: Access denied for user 'ODBC'@'localhost' (using password: NO)
                      ODBC@localhost? müsste das nict root@localhost sein?Also ich komm im Moment absolut nicht weiter, wo liegt da jetzt das Problem. Ich bedanke mich schon mal für eure Hilfe.

                      MfG
                      Mafra

                      Kommentar


                      • #12
                        Vielleicht solltest du dir erstmal darüber klar werden, ob du jetzt die mysqli_*-Funktionen oder die mysql_*-Funktionen nutzen möchtest und ob du das ganze objektorientiert (new mysqli(); $mysqli->query(...)) oder prozedural (mysqli_connect(), mysqli_query()) machen möchtest....

                        ODBC@localhost? müsste das nict root@localhost sein?Also ich komm im Moment absolut nicht weiter, wo liegt da jetzt das Problem. Ich bedanke mich schon mal für eure Hilfe.
                        ODBC@localhost wird standardmäßig/automatisch von mysql_query benutzt wenn keine Verbindung hergestellt wurde...
                        [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                        Kommentar


                        • #13
                          grundsätzlich OOP. Mein Ansatz war halt

                          PHP-Code:
                          if ($db->query($sql_befehl)) {
                          $KdID mysql_insert_id();
                          echo 
                          "Kunde erhaelt die KD Nr. $KDid";
                          } else {
                          echo 
                          "Fehler";

                          Hatte nur den Vorschlag von deeg übernommen und getestet.

                          Die Frage ist halt warum die Verbindung nicht hinhaut. Auslesen funktioniert auch wunderbar.

                          Kommentar


                          • #14
                            Nochmal: Du kannst nicht einfach wild die mysqli-Funktionen mit den mysql-Funktionen mischen und erwarten, dass das dann funktioniert.

                            (es gibt auch mysqli_insert_id() bzw. mysqli::insert_id)

                            Zieh das mal gerade, wenn's dann immer noch nicht geht (was mich wundern würde) sehn wir weiter...
                            [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                            Kommentar


                            • #15
                              Zitat von agrajag Beitrag anzeigen
                              Nochmal: Du kannst nicht einfach wild die mysqli-Funktionen mit den mysql-Funktionen mischen und erwarten, dass das dann funktioniert.

                              (es gibt auch mysqli_insert_id() bzw. mysqli::insert_id)

                              Zieh das mal gerade, wenn's dann immer noch nicht geht (was mich wundern würde) sehn wir weiter...
                              Danke erst mal für deine Geduld.Der Mix war keine Absicht sondern eher unwissenheit. Anfängerfehler Sorry dafür. Ich habe die mysqli_insert_id erst mal weggelassen da die Funktion ja nicht notwendig ist um den Datensatz zu speichern.

                              PHP-Code:
                              if ($db->query($sql_befehl)) {
                              echo 
                              "Datensatz gespeichert";
                              } else {
                              echo 
                              "Fehler";

                              Trotzdem bekomme ich ein false.

                              Kommentar

                              Lädt...
                              X