如何在php-mysql中插入具有相同名称字段的批量数据


How to insert bulk data with same name field in php mysql

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

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>

@nisha,在您的场景中,只有一行被插入,因为变量的名称相同,所以它被覆盖,请尝试下面的代码,它会给您一个字段数组,这样您就可以轻松地创建循环&对查询执行多次插入操作。

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

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

<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').
}

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

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
}

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

你必须做的是使用数组。如果使用已知行数,则可以简单地使用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]."')");
}
?>

注意:消毒变量始终是一种很好的做法,强烈建议使用。