如何在 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 我认为您可能需要查看<form ....>
行
@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->execute($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 中插入多行?
如何使用codeigniter 4框架在mysql数据库中插入多行?