【问题标题】:How to insert bulk data with same name field in php mysql如何在php mysql中插入具有相同名称字段的批量数据
【发布时间】:2014-12-07 16:11:51
【问题描述】:

我曾尝试插入包含多行同名字段的批量数据。但只插入单行。 如何将批量数据作为不同的值插入到数据库中。

INSERT INTO table_name (username, luck_number, test, tester) VALUES (('$username', '$luck_number', '$test', '$tester').

<tr>
    <td>1</td>
    <input type="hidden" name="username" value="<?php echo  $login_session; ?>" />
    <td>
        <input type="text" name="luck_number" value="" />
    </td>
    <td>
        <input type="text" name="big" value="" />
    </td>
    <td>
        <input type="text" name="test" value="" />
    </td>
    <td>
        <input type="text" name="tester" value="" />
    </td>
</tr>
<tr>
    <td>2</td>
    <input type="hidden" name="username" value="<?php echo  $login_session; ?>" />
    <td>
        <input type="text" name="luck_number" value="" />
    </td>
    <td>
        <input type="text" name="big" value="" />
    </td>
    <td>
        <input type="text" name="test" value="" />
    </td>
    <td>
        <input type="text" name="tester" value="" />
    </td>
</tr>
<tr>
    <td>3</td>
    <input type="hidden" name="username" value="<?php echo  $login_session; ?>" />
    <td>
        <input type="text" name="luck_number" value="" />
    </td>
    <td>
        <input type="text" name="big" value="" />
    </td>
    <td>
        <input type="text" name="test" value="" />
    </td>
    <td>
        <input type="text" name="tester" value="" />
    </td>
</tr>

【问题讨论】:

  • php 会将名称字段作为$_POST 的键,因此由于您在输入字段中具有相同的名称,因此每个块都会覆盖前一组。您必须为输入字段指定唯一名称,例如 name="1_luck_number"name="2_luck_number"

标签: php html


【解决方案1】:

插入单行而不是多行的原因是您的输入字段名称。您在不同的输入字段中使用相同的名称,因此当服务器收到回复时,它会替换重复的名称并输出最后一次出现的名称。

你要做的就是使用数组。如果您使用已知的行数,那么您可以简单地使用 for 循环来插入数据。

<tr>
    <td>1</td>
    <input type="hidden" name="username[]" value="<?php echo  $login_session; ?>" />
    <td>
        <input type="text" name="luck_number[]" value="" />
    </td>
    <td>
        <input type="text" name="big[]" value="" />
    </td>
    <td>
        <input type="text" name="test[]" value="" />
    </td>
    <td>
        <input type="text" name="tester[]" value="" />
    </td>
</tr>
<tr>
    <td>2</td>
    <input type="hidden" name="username[]" value="<?php echo  $login_session; ?>" />
    <td>
        <input type="text" name="luck_number[]" value="" />
    </td>
    <td>
        <input type="text" name="big[]" value="" />
    </td>
    <td>
        <input type="text" name="test[]" value="" />
    </td>
    <td>
        <input type="text" name="tester[]" value="" />
    </td>
</tr>
<tr>
    <td>3</td>
    <input type="hidden" name="username[]" value="<?php echo  $login_session; ?>" />
    <td>
        <input type="text" name="luck_number[]" value="" />
    </td>
    <td>
        <input type="text" name="big[]" value="" />
    </td>
    <td>
        <input type="text" name="test[]" value="" />
    </td>
    <td>
        <input type="text" name="tester[]" value="" />
    </td>
</tr>
<?php
for ($i=0; $i<count($_POST['username']); $i++)
{
    mysql_query("INSERT INTO table_name (`username`, `luck_number`, `test`, `tester`) VALUES (('".$_POST['username'][$i]."', '".$_POST['luck_number'][$i]."', '".$_POST['test'][$i]."', '".$_POST['tester'][$i]."')");
}
?>

注意:清理变量始终是一种很好的做法,强烈推荐。

【讨论】:

    【解决方案2】:

    首先通过在末尾添加[] 来更改所有字段名称。 第二步,解析所有值,你可以使用类似这样的东西

    for($i=0; $i < $count($_GET['username']); $i++)
    {
        $username = $_GET['username'][$i];
        $luck_number= $_GET['luck_number'][$i];
        $big= $_GET['big'][$i];
        $test= $_GET['test'][$i];
        $tester= $_GET['tester'][$i];
        // insert into database
    }
    

    【讨论】:

      【解决方案3】:

      **注意:**您可以担心安全问题的信。阅读评论的答案。 通过在输入字段中添加[ ] this 将它们存储在数组中

      <tr>
      <td>1</td>
      <form action="" method="POST">
      <input type="hidden" name="username" value="<?php echo  $login_session; ?>"/>
      <td><input type="text" name="luck_number[]" value=""/></td>
      <td><input type="text" name="big[]" value=""/></td>
      <td><input type="text" name="test[]" value=""/></td>
      <td><input type="text" name="tester[]" value=""/></td>
      </tr>
      <tr>
      <td>2</td>
      <input type="hidden" name="username" value="<?php echo  $login_session; ?>"/>
      <td><input type="text" name="luck_number[]" value=""/></td>
      <td><input type="text" name="big[]" value=""/></td>
      <td><input type="text" name="test[]" value=""/></td>
      <td><input type="text" name="tester[]" value=""/></td>
      </tr>
      <tr>
      <td>3</td>
      <input type="hidden" name="username" value="<?php echo  $login_session; ?>"/>
      <td><input type="text" name="luck_number[]" value=""/></td>
      <td><input type="text" name="big[]" value=""/></td>
      <td><input type="text" name="test[]" value=""/></td>
      <td><input type="text" name="tester[]" value=""/></td>
      </tr>
      <tr></td><input type="submit" name="submit" value="submit"/><tr></td>
      
      </form>
      
      <?php
      //connect with your database
      for($i=0;$i<count($_POST['luck_number']);$i++)
      
      {
          //set the value for variable
          $luck_number=$_POST['luck_number'][$i];
          $test=$_POST['test'][$i];
          $tester=$_POST['tester'][$i];
      
          //run your query 
          //INSERT INTO table_name (username, luck_number, test, tester) VALUES (('$username', '$luck_number', '$test', '$tester').
      }
      

      【讨论】:

        【解决方案4】:

        @nisha,在您的场景中,仅插入单行,因为变量名称相同,因此被覆盖,请尝试以下代码,它将为您提供字段数组,以便您可以轻松创建 for-loop 并使用您的查询进行多次插入.

        <form method="post" name="userdata">
            <tr>
                <td>1</td>
                <input type="hidden" name="username[]" value="<?php echo  $login_session; ?>" />
                <td>
                    <input type="text" name="luck_number[]" value="" />
                </td>
                <td>
                    <input type="text" name="big[]" value="" />
                </td>
                <td>
                    <input type="text" name="test[]" value="" />
                </td>
                <td>
                    <input type="text" name="tester[]" value="" />
                </td>
            </tr>
            <tr>
                <td>2</td>
                <input type="hidden" name="username[]" value="<?php echo  $login_session; ?>" />
                <td>
                    <input type="text" name="luck_number[]" value="" />
                </td>
                <td>
                    <input type="text" name="big[]" value="" />
                </td>
                <td>
                    <input type="text" name="test[]" value="" />
                </td>
                <td>
                    <input type="text" name="tester[]" value="" />
                </td>
            </tr>
            <tr>
                <td>3</td>
                <input type="hidden" name="username[]" value="<?php echo  $login_session; ?>" />
                <td>
                    <input type="text" name="luck_number[]" value="" />
                </td>
                <td>
                    <input type="text" name="big[]" value="" />
                </td>
                <td>
                    <input type="text" name="test[]" value="" />
                </td>
                <td>
                    <input type="text" name="tester[]" value="" />
                </td>
            </tr>
            <input type="submit" name="submit">
        </form>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多