从PHP表单插入MySql的多个记录

时间:2012-03-10 17:22:44

标签: php mysql

我想我的代码中有一个小错误,所以当我尝试将两条记录添加到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表单中的每个名字字段后面都有[]。 感谢

1 个答案:

答案 0 :(得分:0)

这就是我认为正在发生的事情。

在循环中,您将当前查询添加到字符串中,覆盖以前的查询。循环结束后,运行mysql_query,但这只会在循环生成的最后一个查询上运行。

您有两种解决方法:

  1. 在每次迭代时在循环内执行查询。伪代码:

    for($ i = 1到100) {
    $ query = //构建您的查询;

    的mysql_query($查询);

    }

  2. 或者,(以及更好的方式)是在insert语句中使用值列表。

  3. 带有值列表的插入符如下所示

    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);