Ankündigung

Einklappen
Keine Ankündigung bisher.

INSERT über mehrere Tabellen

Einklappen

Neue Werbung 2019

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

  • INSERT über mehrere Tabellen

    Hallo!

    Folgendes Problem:

    Ich habe zwei sql-Tabellen: "person" und "adresse":

    In der Tabelle Person sind nur Vorname, Nachname und ID einer Person gespeichert.
    In der Tabelle "adresse" sind die PersonID und die ganzen Adressdaten der jeweiligen Person gespeichert.

    Mit einer PHP Datei möchte ich in diese Tabellen einen neuen Eintrag machen. Die PersonID wird mittels AutoIncrement vergeben.

    PHP-Code:
    $sql_insert_person "INSERT INTO 'person' ('id', 'vorname','nachname')  VALUES  ' ', '$vorname', '$nachname'); 


    Wie bekomme ich jetzt die ID heraus, welche in der 1. Tabelle mittels AutoIncrement automatisch vergeben wurde? Die gleiche ID, welche in der Tabelle "person" gespeichert ist, brauche ich ja auch in der Tabelle "adresse", dass ich die entsprechenden Daten miteinander verknüpfen kann.

    Mittels Bedingung "WHERE vorname= '$vorname' AND nachname='$nachname' " würde ich die ID zwar bekommen, aber wirkich sauber ist diese Lösung nicht, da sie ja nicht eindeutig ist.

    Ich hoffe ich konnte meine Frage halbwegs verständlich formulieren.


  • #2
    MySQL :: MySQL 5.1 Referenzhandbuch :: 24.2.3.36 mysql_insert_id()

    Kommentar


    • #3
      Danke! Genau das was ich brauche!

      Kommentar


      • #4
        So, habe noch eine Frage zu dieser Thematik:

        In meiner zweiten INSERT Abfrage hatte ich eben einen Syntax-Fehler. Nun hat er den Eintrag in die erste Tabelle geschrieben aber nicht in die Zweite.
        Der Syntaxfehler ist zwar mittlerweile behoben und es funktioniert jetzt auch, aber dennoch stelle ich mir die Frage, wie ich es verhindern kann, dass er in eine Tabelle etwas einträgt aber nicht in die andere falls etwas schief geht!
        Also ich will entweder ganz oder gar nicht!

        Ich habs jetzt so geschrieben, dass wenn die erste Abfrage fehlschlägt er die zweite gar nicht mehr erst versucht. Wenn jedoch die erste Abfrage durchkommt, kann ja immer noch die zweite scheitern! Wie verhindere ich das?

        So schauts bisher aus:
        PHP-Code:
                                             
            $query
        =mysql_query($sql_insert_person,$db);                 
            
        $letzte_id mysql_insert_id();
                                        
            if(!
        $query){
            echo 
        "Fehler, die Daten wurden <b>nicht</b> in die Datenbank eingetragen!<br>";
            echo 
        "Grund: <b>"mysql_error();
            echo 
        "</b><br><br>";
            }
        else
        {
            
        $sql_insert_adresse "INSERT INTO adresse (personID, adresse, postleitzahl, ort, land, email, telefonnummer, telefonnummer2, raum)
                                               VALUES
                                              ('
        $letzte_id','$adresse','$postleitzahl','$ort','$land','$email','$telefonnummer','$telefonnummer2','$raum')"
            
            
        $query=mysql_query($sql_insert_adresse,$db); 

        Kommentar


        • #5
          Zitat von maikell Beitrag anzeigen
          aber dennoch stelle ich mir die Frage, wie ich es verhindern kann, dass er in eine Tabelle etwas einträgt aber nicht in die andere falls etwas schief geht!
          dazu verwendet man SQL Transactions. In PHP z.B. nutzbar mit PDO, solange die Datanbankengine das unterstützt (z.B. InnoDB)

          Kommentar

          Lädt...
          X