如何在 MySQL 中插入多行 PHP

Posted

技术标签:

【中文标题】如何在 MySQL 中插入多行 PHP【英文标题】:How insert to MySQL many rows PHP 【发布时间】:2022-01-17 12:36:30 【问题描述】:

我想向 mysql 发送很多行。 我有一个列出所有产品(大约 200 个)的 php 表单。我不知道如何将所有项目添加到mysql数据库中...... 需要循环吗?

<form method="POST" action=""; model_load('orderForm_model', 'sendOrder'); echo "">
    <div class="col-1">PLU</div>
    <div class="col-1">IL</div>
    <div class="col-2">OP</div>>";
    
    $orderStandardForm = $this->__db->execute("SELECT ID_product from product");

    foreach($orderStandardForm as $orderStandardForm_)
    
    echo "  <div class="row">
                <div class="col-1"><input type="number" name="plu" value="$orderStandardForm_['ID_produkt']"></div>
                <div class="col-1"><input type="number" pattern="[0-9]*" inputmode="decimal" id="input1" step="0.01" name="il" class="width100"></div>
                <div class="col-2"><input type="text" id="opisTxt_$orderStandardForm_['ID_produkt']" name="op" class="width100"></div>
            </div>";
    
    echo "   <input class="btn btn-primary width100" type="submit" value="Send order">
</form>";

【问题讨论】:

mysqltutorial.org/mysql-insert-multiple-rows 我认为您可能需要查看&lt;form ....&gt; @KHIMAJIVALUKIYA 在这样的解决方案中我是否必须将所有行添加到数组中? 检查我发布的示例代码的答案。 【参考方案1】:

我无法理解您的问题。对吗?

the code name="plu" change to name="plu[]"

the code name="il" change to name="il[]"

the code name="op" change to name="op[]"

【讨论】:

我有一个包含 200 个项目的表格,格式为:plu, il, op.我需要将 (isset ($ il)) 中的项目保存到数据库中:值 (plu, il, op), (plu, il, op), (plu, il, op), (plu, il, op) , ....【参考方案2】:

试试这个:

html

        <form method="POST" action=""; model_load('orderForm_model', 'sendOrder'); echo "">
        <div class="col-1">PLU</div>
        <div class="col-1">IL</div>
        <div class="col-2">OP</div>>";
        
        $orderStandardForm = $this->__db->execute("SELECT ID_product from product");

        foreach($orderStandardForm as $orderStandardForm_)
        
        echo "  <div class="row">
                    <div class="col-1"><input type="number" name="plu[]" value="$orderStandardForm_['ID_produkt']"></div>
                    <div class="col-1"><input type="number" pattern="[0-9]*" inputmode="decimal" id="input1" step="0.01" name="il[]" class="width100"></div>
                    <div class="col-2"><input type="text" id="opisTxt_$orderStandardForm_['ID_produkt']" name="op[]" class="width100"></div>
                </div>";
        
        echo "   <input class="btn btn-primary width100" type="submit" value="Send order">
    </form>";

PHP保存过程:

        $plu_arr = $_POST["plu"];
    $il_arr = $_POST["il"];
    $op_arr = $_POST["op"];
    $row_index = 0;
    $row_arr = array();
    foreach($plu_arr as $plu_data)
       if(isset($il_arr[$row_index]) && $il_arr[$row_index] != '')
        $row_arr[] = "('".$plu_data."','".$il_arr[$row_index]."','".$op_arr[$row_index]."')";
        
        $row_index++;
    

    $ins_qry = "INSERT INTO your_table_name (plu, il, op) VALUES ".implode(", ", $row_arr);
    $db_ins = $this->__db->execute($ins_qry);

【讨论】:

不幸的是它不起作用...我添加了 if ($ ins_qry) 标头 ('Refresh: 0; URL = 0');我刷新了页面,但数据库是空的......也许问题出在一个常量值上......在每一行中,我必须添加一个与给定订单相同的常量...... $ row_arr [] = "( '". $ plu_data. "', '15000', '". $ il_arr [$ row_index]. "', '". $ op_arr [$ row_index]. "')"; 你能显示整个保存过程的代码吗? 你需要添加:$db_ins = $this->__db->e​​xecute($ins_qry); 我已经更新了答案,请检查,在 foreach 中添加了 isset 而不是空条件。 foreach($plu_arr as $plu_data) if(isset($il_arr[$row_index]) and !empty($il_arr[$row_index])) $row_arr[] = "('" .$plu_data."','$selectNumberZam_','".$il_arr[$row_index]."','".$op_arr[$row_index]."')"; $row_index++;

以上是关于如何在 MySQL 中插入多行 PHP的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中从 AUTO_INCREMENT 列中为每行检索生成的 PRIMARY KEY,并在 MySQL 中插入多行?

使用foreach数组使用php将多行插入mysql

如何使用codeigniter 4框架在mysql数据库中插入多行?

如何在mysql中将单行插入查询重构为多行插入查询?

如果发生多行,如何在 php mysql 的侧存储过程中执行选择查询?

如何通过 PHP 将未知数量的 HTML 表单字段插入 MySQL?