Ich habe ein HTML-Formular erstellt, in dem Benutzer ihren Namen, ihre E-Mail-Adresse und ihre Sprachkenntnisse angeben. Da ein Benutzer mehr als eine Sprache sprechen kann, kann der Benutzer zusätzliche Zeilen generieren, indem er auf "Hinzufügen" klickt.Verwenden Sie MySQLi Prepared Statement, um dynamische, mehrere Zeilen in die Datenbank einzugeben?
Das Formular wird dann übermittelt und in eine MySQL-Datenbank eingegeben. Ich bin mit zwei Tabellen, die empfangenen Daten zu halten, während der Benutzer-ID in der ersten Tabelle wird auto_incremented wird:
| (user-id) | name | email|
| user-id | language | proficiency|
Jetzt versuche ich den PHP-Code zu schreiben, die etwa wie folgt aussieht:
$name = $_POST['name'];
$email = $_POST['email'];
$add_table1 = $mysqli->prepare("INSERT INTO table1 (name, email) VALUES (?, ?)");
$add_table2 = $mysqli->prepare("INSERT INTO table2 (user_id, language, proficiency) VALUES (?, ?, ?)");
$add_table1->bind_param("ss", $name, $email);
$add_table1->execute();
$user-id = $mysqli->insert_id;
foreach($_POST['language'] as $index => $language) {
$index = intval($index);
$language = mysql_real_escape_string($language);
$proficiency = mysql_real_escape_string($_POST['proficiency'][$index]);
$add_table2->bind_param("iss", $user-id, $language, $proficiency);
$add_table2->execute();
}
$add_table1->close();
$add_table2->close();
$mysqli->close();
Die Tabelle wie diese
| 1 | Mark | [email protected] |
| 2 | Sue | [email protected] |
|1 | English | perfect |
|1 | Spanish | awesome |
|2 | English | great |
|2 | French | ok |
|2 | Korean | fluent |
jedoch mit meiner Code-Tabelle aussehen soll 1 sieht gut aus, aber Tabelle 2 sieht aus wie diese
012.| 1 | | |
| 2 | | |
Kann jemand helfen? Vielen Dank!
Warum verwenden Sie mysql_real_escape_string hier? –
Abstimmung zu schließen, als keine echte Frage. Leute um Hilfe mit dem Code zu bitten, der aufgrund von Syntaxfehlern nie funktioniert, macht absolut keinen Sinn. –