简体   繁体   中英

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

I had tried to insert bulk data with same name field contains multiple rows. But only single row is inserted. How to insert bulk data as different values to insert into the database.

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> 

**Note:**you can worry about the security issue letter. read the answer with the comment. Store them in array by adding [ ] this in your input field

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

@nisha,In your scenario only single row is inserted because variables are same name so it's overridden, Please try below code, It will give you array of fields so you can easily create for-loop & do multiple insert with your query.

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

First of all change all field names by adding [] at the end. Second step, to parsing all values you may use something like this

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
}

The reason of inserting single row instead of multiple rows is your input field name. You are using same name in different input field so when the server gets the reply it replace the duplicate name and the last occurrence is outputted.

The thing you have to do is to use array. If you use known number of rows then you can simply use a for loop to insert data.

 <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]."')");
}
?>

Note: Sanitizing variable is always been a good practice and strongly recommended.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM