我已經創建了一個HTML表單,用戶可以在其中提交姓名,電子郵件和語言技能。由於用戶可以說多種語言,用戶可以通過點擊「添加」按鈕來生成額外的行。使用MySQLi Prepared Statement將多行數據輸入數據庫?
然後表單將被提交併輸入到MySQL數據庫中。我用兩個表來保存接收到的數據,而用戶ID在第一個表將被auto_incremented:
| (user-id) | name | email|
| user-id | language | proficiency|
現在我想要寫PHP代碼,它看起來是這樣的:
$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();
表應該是這樣的
| 1 | Mark | [email protected] |
| 2 | Sue | [email protected] |
|1 | English | perfect |
|1 | Spanish | awesome |
|2 | English | great |
|2 | French | ok |
|2 | Korean | fluent |
然而,我的碼錶1看起來不錯,但表2是這樣的
| 1 | | |
| 2 | | |
有人可以幫忙嗎?謝謝!
爲什麼在這裏使用mysql_real_escape_string? – 2012-03-30 09:39:48
投票結束不是一個真正的問題。要求人們尋求幫助,因爲語法錯誤導致的代碼無法工作,這絕對沒有意義。 – 2012-03-30 09:43:34