我想我的代码中有一个小错误,所以当我尝试将两条记录添加到MySQL数据库时,它们都添加了它们,但目前它只添加了应该输入的第二行。例如,我有两个RefTitle字段,两个RefSurname字段等等! 一些PHP代码:
<?php
if(empty($err)) {
for($i = 0; $i < 2; $i++)
{
$RefTitle = $_POST['RefTitle'][$i];
$RefSurname = $_POST['RefSurname'][$i];
$RefForenames = $_POST['RefForenames'][$i];
$RefInstitute = $_POST['RefInstitute'][$i];
$RefEmail = $_POST['RefEmail'][$i];
$RefTelephone = $_POST['RefTelephone'][$i];
$EmailOK = $_POST['EmailOK'][$i];
$sql_insert = "INSERT into `referees`
(`RefTitle`,`RefSurname`,`RefForenames`,`RefInstitute`, `RefEmail`,
`RefTelephone`,`EmailOK`)
VALUES
('$RefTitle','$RefSurname','$RefForenames','$RefInstitute','$RefEmail',
'$RefTelephone','$EmailOK'
)
"; ?>
我的html表单中的每个名字字段后面都有[]。 感谢
答案 0 :(得分:0)
这就是我认为正在发生的事情。
在循环中,您将当前查询添加到字符串中,覆盖以前的查询。循环结束后,运行mysql_query
,但这只会在循环生成的最后一个查询上运行。
您有两种解决方法:
在每次迭代时在循环内执行查询。伪代码:
for($ i = 1到100)
{
$ query = //构建您的查询;
的mysql_query($查询);
}
或者,(以及更好的方式)是在insert语句中使用值列表。
带有值列表的插入符如下所示
INSERT INTO table VALUES (1,2,3), (4,5,6), (7,8,9)
所以,(伪代码再次)
$query = "INSERT INTO table VALUES ";
for ($i = 1 to 100)
{
$query .= " (";
$query .= "" //comma seperate the values of the current iteration
$query .= "),";
}
//循环结束后,删除尾随无关的逗号
//一次执行整个查询
mysql_query($query);