php - While 循环仅插入最后一条记录

标签 php mysql

我有一个 while 循环,如果一行满足条件,它会显示复选框。它位于我想提交并执行插入的表格中。这是循环的代码:

<form action'' method='post'>

$result = mysqli_query($con,"SELECT * FROM b_tasks_report WHERE TASK_ID=$taskid GROUP BY WEEK_ID");

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td class='noborder'><input type='checkbox' name='invoicename[]' value='$invoicename - Week " . $row['WEEK_ID'] . "'>Week " . $row['WEEK_ID'] . "</td>";
echo "</tr>";
}
echo "</table>";
<input type='submit' name='submit' value='submit'></form>

当前返回三个复选框,每个复选框分别标记为第 1 周、第 2 周和第 3 周。我遇到的问题是,当我提交表单并执行插入时,它只插入最后一行。这是我的插入内容:

$sql="INSERT into b_sale_order (LID,PERSON_TYPE_ID,PAYED,CANCELED,STATUS_ID,DATE_STATUS,EMP_STATUS_ID,PRICE_DELIVERY,ALLOW_DELIVERY,DEDUCTED,MARKED,RESERVED,PRICE,CURRENCY,DISCOUNT_VALUE,USER_ID,PAY_SYSTEM_ID,DATE_INSERT,DATE_UPDATE,TAX_VALUE,SUM_PAID,RECOUNT_FLAG,UPDATED_1C,ORDER_TOPIC,RESPONSIBLE_ID,DATE_BILL)
VALUES
('s1','1','N','N','A','$_POST[insertdate]','1','0.00','N','N','N','Y','0.00','GBP','0.00','1','1','$_POST[insertdate]','$_POST[insertdate]','0.00','0.00','Y','N','$_POST[invoicename]','1','$_POST[insertdate]')";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }

我多次使用 insertdate 帖子项目。我尝试将以下内容添加到表单字段的名称中:

insertdate[] 

然后在上面插入一个:

foreach($_POST['insertdate'] as

但我无法让它工作。是因为我在不同的字段多次使用同一个帖子项目吗?我应该添加一个隐藏的 ID 字段以供其查看吗?

总而言之,我只想根据勾选的复选框数量添加 1-3 个新行。

您的帮助将不胜感激。提前致谢

最佳答案

首先插入语句中的索引 $_POST 变量应该有引号,试试这个

$names= $_POST['invoicenames']
foreach($names as $invoicename){
$sql="INSERT into b_sale_order (LID,PERSON_TYPE_ID,PAYED,CANCELED,STATUS_ID,DATE_STATUS,EMP_STATUS_ID,PRICE_DELIVERY,ALLOW_DELIVERY,DEDUCTED,MARKED,RESERVED,PRICE,CURRENCY,DISCOUNT_VALUE,USER_ID,PAY_SYSTEM_ID,DATE_INSERT,DATE_UPDATE,TAX_VALUE,SUM_PAID,RECOUNT_FLAG,UPDATED_1C,ORDER_TOPIC,RESPONSIBLE_ID,DATE_BILL)
VALUES
('s1','1','N','N','A','".$_POST['insertdate']."','1','0.00','N','N','N','Y','0.00','GBP','0.00','1','1','".$_POST['insertdate']."','".$_POST['insertdate']."','0.00','0.00','Y','N','".$invoicename."','1','".$_POST['insertdate']."')";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
 }

关于php - While 循环仅插入最后一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20287534/

相关文章:

php - Magento:AddAttributeToSort 不起作用

php - 使用 jquery .ajax 或 .get 通过 php 脚本从数据库接收内容

php - 使用 MySQL 数据库填充 php 数组

php - 在 MySQL 中使用 INSERT 时没有选择数据库?

php - 我无法从 mysql 数据库中获取多行到数组中?

php - PHP 和 MySql 中的空数组

php - 将评论推送到本地主机上的我的数据库

mysql - 是否可以构建一个查询,首先使用 where 和连接条件进行更新,如果更新存在则插入?

mysql - 将数据放入表 OneToONE 的正确方法

php - Laravel 事务回滚似乎不起作用