Php 在表中插入多行

Php 在表中插入多行,php,html,mysql,mysqli,Php,Html,Mysql,Mysqli,我在将数据插入数据库时遇到问题。我使用添加按钮添加新的文本框,第一个文本框的默认值为10,单击添加按钮后,下一个文本框将依次添加值,如20、30、,。。。。每个文本框都有自己的值。并使用提交按钮将其单个文本框值一次性发送到同一个表。此处代码: //insert into database-Line Item Data $itemlist = ''; $more = TRUE; $i=1; while ($more) { if (isset($_POST['lineitem_'.$i]))

我在将数据插入数据库时遇到问题。我使用添加按钮添加新的文本框,第一个文本框的默认值为10,单击添加按钮后,下一个文本框将依次添加值,如20、30、,。。。。每个文本框都有自己的值。并使用提交按钮将其单个文本框值一次性发送到同一个表。此处代码:

//insert into database-Line Item Data
$itemlist = '';
$more = TRUE;
$i=1;
while ($more) {
    if (isset($_POST['lineitem_'.$i])) {
        $itemlist .= $_POST['lineitem_'.$i];
        $itemlist .= "<br />";
    } else {
        $more = FALSE;
    }
    $i++;
}
$query_line_item = "INSERT INTO tbl_order_item (item) values ('$itemlist')";
$result_line_item = mysqli_query($con, $query_line_item);
//插入数据库行项目数据
$itemlist='';
$more=正确;
$i=1;
而(更多美元){
如果(isset($\u POST['lineitem.'$i])){
$itemlist.=$\u POST['lineitem.'$i];
$itemlist.=“
”; }否则{ $more=假; } $i++; } $query_line_item=“插入tbl_订单_项目(item)值(“$itemlist”)”; $result\u line\u item=mysqli\u query($con,$query\u line\u item);

Code send only第一个文本框值为10,其他文本框值不发送。

您必须使用文本框名称数组获取所有文本框的值,为此,将此名称(name=“lineitem[]”“)放入您生成的所有文本框中,并在提交数据时获得一个值数组,然后在php脚本中使用
foreach
循环遍历数组,并在
foreach
循环中运行插入查询,这样您将同时获得表中文本框的所有值

使用此链接作为参考:


您必须使用文本框名称数组来获取所有文本框的值,为此,请将此名称(
name=“lineitem[]”“
)放入您生成的所有文本框中,并在提交数据时获取一个值数组,然后在php脚本中使用
foreach
循环遍历数组,并在
foreach
循环中运行插入查询,这样您将同时获得表中文本框的所有值

使用此链接作为参考:


我更喜欢将其保存在数组中,然后使用serialize存储在数据库中。当您想要检索时,可以取消序列化并使用它

$itemlist = array();
$more = TRUE;
$i=1;
while($more)
{
    if (isset($_POST['lineitem_'.$i]))
    {
        $itemlist[]= $_POST['lineitem_'.$i];
    }else
    {
        $more = FALSE;
    }
$i++;
}
$itemlist = serialize($itemlist);//serialize to store an array in database
$query_line_item = "INSERT INTO tbl_order_item (item) values ('$itemlist')";
$result_line_item = mysqli_query($con, $query_line_item);
当你想检索并使用它时,只需使用

$itemlist = unserialize($itemlist);//unserialize to use as an array
根据您的最新代码进行编辑: $add\u nr我想是在这段代码的某个地方定义的

    $line_item = ''; 
     $more = TRUE; 
    for ($i=0; $i<5; $i++) 
    { 
    if((isset($_POST['lineitem_'.$i])) && ($_POST['lineitem_'.$i] !="") && isset($_POST['materialcode_'.$i]) && isset($add_nr))
    { 
    $line_item = $_POST['lineitem_'.$i]; 
    $materialcode = $_POST['materialcode_'.$i]; 
    $query_line_item = "INSERT INTO tbl_order_item (order_number, item, material) 
values ('$add_nr', '$line_item', '$materialcode')"; $result_line_item = mysqli_query($con, $query_line_item); 
    }else { 
    $more = FALSE; 
    } 
    }
$line\u项目=“”;
$more=正确;

对于($i=0;$i我更喜欢将其保存在数组中,然后使用serialize存储在数据库中。当您想要检索时,可以取消序列化并使用它

$itemlist = array();
$more = TRUE;
$i=1;
while($more)
{
    if (isset($_POST['lineitem_'.$i]))
    {
        $itemlist[]= $_POST['lineitem_'.$i];
    }else
    {
        $more = FALSE;
    }
$i++;
}
$itemlist = serialize($itemlist);//serialize to store an array in database
$query_line_item = "INSERT INTO tbl_order_item (item) values ('$itemlist')";
$result_line_item = mysqli_query($con, $query_line_item);
当你想检索并使用它时,只需使用

$itemlist = unserialize($itemlist);//unserialize to use as an array
根据您的最新代码进行编辑: $add\u nr我想是在这段代码的某个地方定义的

    $line_item = ''; 
     $more = TRUE; 
    for ($i=0; $i<5; $i++) 
    { 
    if((isset($_POST['lineitem_'.$i])) && ($_POST['lineitem_'.$i] !="") && isset($_POST['materialcode_'.$i]) && isset($add_nr))
    { 
    $line_item = $_POST['lineitem_'.$i]; 
    $materialcode = $_POST['materialcode_'.$i]; 
    $query_line_item = "INSERT INTO tbl_order_item (order_number, item, material) 
values ('$add_nr', '$line_item', '$materialcode')"; $result_line_item = mysqli_query($con, $query_line_item); 
    }else { 
    $more = FALSE; 
    } 
    }
$line\u项目=“”;
$more=正确;

对于($i=0;$ii已更改为:$line_item='';$more=TRUE;对于($i=0;$ii出现错误:注意:未定义索引:C:\xampp\htdocs\cmg logistics\make_order.php中的materialcode_1在lineYoy上没有检查是否设置了材料代码。如果没有检查,您将插入数据库。它可能没有设置。我已经更改为:$line_item='';more=TRUE;例如($i=0;$ii出现错误:注意:未定义索引:C:\xampp\htdocs\cmg logistics\make_order.php中的materialcode_1在lineYoy上没有检查是否设置了材料代码。如果没有检查,您将插入数据库。它可能没有设置。