【发布时间】:2012-03-30 09:37:26
【问题描述】:
我创建了一个 HTML 表单,用户可以在其中提交他们的姓名、电子邮件和语言技能。由于用户可能会说一种以上的语言,因此用户可以通过单击“添加”按钮来生成其他行。
然后表单将被提交并输入到 MySQL 数据库中。我使用两个表来保存接收到的数据,而第一个表中的用户 ID 将自动递增:
| (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 | mark@me.com |
| 2 | Sue | sue@me.net |
|1 | English | perfect |
|1 | Spanish | awesome |
|2 | English | great |
|2 | French | ok |
|2 | Korean | fluent |
但是,我的代码表 1 看起来不错,但表 2 看起来像这样
| 1 | | |
| 2 | | |
有人可以帮忙吗?谢谢!
【问题讨论】:
-
你为什么在这里使用mysql_real_escape_string?
-
投票结束不是一个真正的问题。向人们寻求由于语法错误而永远无法运行的代码的帮助绝对没有意义。
标签: php mysql database mysqli prepared-statement