2016-05-16 15 views
2

Ich habe diese Form:Link zu einer Zeile der Tabelle auf mehrere Zeilen in einer anderen Tabelle in MySQL

Form Image

Nach Absenden des Formulars werden persönliche Daten in persönliche Tabelle und Buchdetails in Buch Tabelle eingefügt werden. Ich möchte eine persönliche Tabellenzeile mit mehreren Zeilen in der Büchertabelle (da sie mit derselben Abfrage einfügt) über eine eindeutige ID verknüpfen, so dass ich erkennen kann, dass diese Bücher zu dieser Person zu einem späteren Zeitpunkt verwandt sind.

Das ist mein PHP und MySQL-Skript:

$mysqli = new mysqli($host,$user,$password,$database); 

$users_firstname = $_POST['firstname']; 
$users_middlename = $_POST['middlename']; 
$users_lastname = $_POST['lastname']; 
$users_gender= $_POST['gender']; 
$users_location= $_POST['location']; 
$users_email= $_POST['email']; 
$users_mobile= $_POST['mobile']; 

$query = "INSERT INTO personaldetails(FirstName ,MiddleName,LastName, 
Gender,Location,Email,Mobile) VALUES ('$users_firstname', 
'$users_middlename', '$users_lastname', '$users_gender','$users_location','$users_email','$users_mobile');"; 

foreach($_POST['booktitle'] as $key => $bookTitle) { 
    $bookTitle = mysqli_real_escape_string($mysqli, $bookTitle); 
    $bookGenre = mysqli_real_escape_string($mysqli, $_POST['bookgenre'][$key]); 
    $bookWriter = mysqli_real_escape_string($mysqli, $_POST['bookwriter'][$key]); 
    $bookDescription = mysqli_real_escape_string($mysqli, $_POST['bookdescription'][$key]); 

    $query .= "INSERT INTO bookdetails(BookTitle ,BookGenre,BookWriter, 
       BookDescription) VALUES('$bookTitle', 
      '$bookGenre', '$bookWriter', '$bookDescription');"; 
} 

$result = mysqli_multi_query($mysqli, $query); 

Antwort

1

Eine posssible Lösung ist durch mysqli_insert_id verwenden.

Aber Sie werden auch eine zusätzliche Spalte in Büchertisch zum Speichern von Benutzer-ID erstellen müssen, um ein Buch mit einem Benutzer zu beziehen, lassen Sie es User_id (sein, welche die ID des neu erstellten Benutzers gespeichert wird, dass wir Get von mysqli_insert_id())

und Sie müssen auch die Abfragen separat ausführen, um die neu eingefügte Benutzer-ID zu erhalten.

So wird der Code wie sein -

$mysqli = new mysqli($host,$user,$password,$database); 

    $users_firstname = $_POST['firstname']; 
    $users_middlename = $_POST['middlename']; 
    $users_lastname = $_POST['lastname']; 
    $users_gender= $_POST['gender']; 
    $users_location= $_POST['location']; 
    $users_email= $_POST['email']; 
    $users_mobile= $_POST['mobile']; 

    $user_query = "INSERT INTO personaldetails(FirstName ,MiddleName,LastName, 
    Gender,Location,Email,Mobile) VALUES ('$users_firstname', 
    '$users_middlename', '$users_lastname', '$users_gender','$users_location','$users_email','$users_mobile');"; 

//execute the user query 
$result = mysqli_query($mysqli, $user_query); 
//get the user id of newly inserted user 
$user_id = mysqli_insert_id($mysqli); 

    foreach($_POST['booktitle'] as $key => $bookTitle) { 
     $bookTitle = mysqli_real_escape_string($mysqli, $bookTitle); 
     $bookGenre = mysqli_real_escape_string($mysqli, $_POST['bookgenre'][$key]); 
     $bookWriter = mysqli_real_escape_string($mysqli, $_POST['bookwriter'][$key]); 
     $bookDescription = mysqli_real_escape_string($mysqli, $_POST['bookdescription'][$key]); 

//use the user id here to relate it with the book 
    $book_query = "INSERT INTO bookdetails(BookTitle ,BookGenre,BookWriter, 
       BookDescription, user_id) VALUES('$bookTitle', 
      '$bookGenre', '$bookWriter', '$bookDescription', '$user_id');"; 
//execute the query for book 
$result = mysqli_query($mysqli, $book_query); 

} 
+0

diesen Fehler zeigt, Parse-Fehler: Syntaxfehler, unerwartet 'foreach' (T_FOREACH) – Cooolranjan

+0

Sie so viel @manoj Viele :) obwohl es nicht eindeutig ist aber ich habe Grundidee, jetzt werde ich es tun. Danke vielmals – Cooolranjan

Verwandte Themen