• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

id als Fremdschlüssel in andere Tabelle übernehmen

Matze27

Mitglied
Hallo,
ich bin noch ziemlicher Anfänger in Sachen Mysql und bräuchte mal eure Hilfe.
Zu meinem Problem:
Ich füge Daten in eine Tabelle *user* ein, danach möchte ich die *iduser* aus dieser Tabelle ermitteln und diese dann als Fremdschlüssel in die Tabelle *adr* einfügen. Leider bekomme ich immer folgende Fehlermeldung:
Object of class mysqli_result could not be converted to string

Hier mein code:
PHP:
//Prüfen ob der Kunde schon in der Datenbank vorhanden ist 
            $sql = "SELECT * FROM fh_user WHERE benutzername = '$nutzername'"; 
             
            $daten = mysqli_query($db, $sql) or die ('Fehler bei der Datenbankabfrage'); 
            if (mysqli_num_rows($daten) == 0) { 
            //Kunde ist noch nicht in der Datenbank und kann eingetragen werden 
              $sql = "INSERT INTO fh_user (benutzername, email, password, vorname, nachname, tel) VALUES" .  
              "('$nutzername', '$email', SHA('$passwort1'), '$vorname', '$nachname', '$tel')"; 
              mysqli_query($db, $sql);  
               
//iduser ermitteln 
              $sql = "SELECT iduser FROM fh_user WHERE benutzername = '$nutzername'"; 
              $iduser = mysqli_query ($db, $sql); 
              //Adresse eintragen 
              $sql = "INSERT INTO adr (strasse, haus_nr, ort, plz, iduser) VALUES" . 
              "('$strasse', '$haus_nr', '$stadt', '$plz', '$iduser')"; 
              mysqli_query($db, $sql); 
              //Name der Gastronomie eintragen 
              $sql = "INSERT INTO gastro (gastro_name) VALUES" . 
              "('$gastro_name')"; 
              mysqli_query($db, $sql);
Ich hoffe Ihr könnt mir Helfen
 
<edit>War Quatsch, was hier vorher stand</edit>

Wo kommt $db her?

 
Zuletzt bearbeitet von einem Moderator:
Danke für deine schnelle Antwort. Werde leider nicht schlau aus der Manual...ausser das es vielleicht an meinem verwendeten Datentyp liegt.
Liege ich da richtig?
 
Hallo,
hab es jetzt soweit hinbekommen das die iduser in der *adr* Datenbank übernommen wird, nur leider wird sie sepperat eingetragen. Ich versuchs gerade mit folgender INSERT Anweisung:

PHP:
 $sql = " INSERT INTO adr (iduser) SELECT iduser FROM fh_user WHERE benutzername ='$nutzername'";

Jetzt möchte ich diese id noch den zuletzt eingetragenen Datensatz zuordnen.
 
Soweit ich das verstanden habe, bezieht sich die Funktion mysqli_insert_id, auf das letzte query was ich ausgeführt habe. Nun habe ich es mal folgender Maßen brobiert:

PHP:
//Adresse eintragen
              $sql = "INSERT INTO adr (strasse, haus_nr, ort, plz) VALUES" .
              "('$strasse', '$haus_nr', '$stadt', '$plz')";
              mysqli_query($db, $sql);
              //iduser ermitteln
              $adr_id = mysqli_insert_id();
               $sql = " INSERT INTO adr (iduser WHERE adr_id = '$adr_id')  SELECT iduser FROM fh_user WHERE benutzername ='$nutzername'";
              mysqli_query ($db, $sql);
Also ich finde, dass ich diesmal richtig liege :shock:, nur funktioniert es nicht.
Erwartet die Funktion mysqli_insert_id() noch einen Wert?
 
PHP:
$sql = "INSERT 
          INTO 
            `fh_user`
              (`benutzername`, 
               `email`, 
               `password`, 
               `vorname`, 
               `nachname`, 
              `tel`) 
          VALUES
               '$nutzername', 
               '$email', 
               SHA('$passwort1'), 
               '$vorname', 
               '$nachname', 
               '$tel')"; 
             
mysqli_query($db, $sql)
   or die ("MySQL-Error: " . mysqli_error());
   
$userId = mysqli_insert_id($db);

$sql = "INSERT 
          INTO 
            `adr` 
              (`strasse`, 
               `haus_nr`, 
               `ort`, 
               `plz`, 
               `iduser`) 
          VALUES 
              ('$strasse', 
               '$haus_nr', 
               '$stadt', 
               '$plz', 
               '$userId')"; 
               
mysqli_query($db, $sql)
   or die ("MySQL-Error: " . mysqli_error());
 
Danke...Danke.
Bin gar nicht auf die Idee gekommen...gleich die userid zu ermitteln. Aber deswegen versuche ich es ja gerade zu lernen.
Eine kleine Frage noch. Der Parameter $db, muss ich den der Funktion übergeben, oder ist der nur optional? Hatte das so aus der Manual verstanden
 
Zurück
Oben