php - 从 php foreach 插入多行

标签 php mysql

我有一个带有动态(用户确定的)行数的 html 表单,每行都有多个输入;我正在尝试实现一个将插入行的 MySQL 查询 到数据库表中,或多或少是逐行的(尽管有一个来自该表外部的值 $_POSTing,我也会将其添加到 INSERT 中)。

我正在检索这些值,如下所示:

<?php
    if (isset($_POST['submit'])) {

        $lineItems = array();
        foreach ($_POST['date'] as $i => $value) {
            $customer = $_POST['customer'][$i]; // this value is from *outside* the line items table
            $date = $_POST['date'][$i];
            $time = $_POST['time'][$i];
            $fee = $_POST['fee'][$i];

            $lineItems[] = "('$customer', '$date', '$time', '$fee')";

        // I realize the query should be outside the loop, but what I'm trying to do is something like this (pseudo-code):
            $query = "INSERT INTO Line_Items (CUSTOMER, DATE, TIME, FEE) VALUES ". implode(", ", $lineItems)
            . "ON DUPLICATE KEY UPDATE
            CUSTOMER    = VALUES(CUSTOMER),
            DATE        = VALUES(DATE),
            TIME        = VALUES(TIME),
            FEE     = VALUES(FEE)
            ";

        }
    }
?>

通过此查询 - 在循环内部或外部 - 我仅插入最后一行输入中的值;有人可以举例说明如何 构建一个插入多个行项目的查询和适当的查询?非常感谢。

最佳答案

在循环内,您将在帖子中的每一行中获得一行 - 在循环外,您将仅插入最后一行。

如果您只需要最后一行 - 那么无需循环整个集合来获取它。

您可以计算行数 - 然后直接定位最后一行 - 请参阅 php

count() 

关于php - 从 php foreach 插入多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22103010/

相关文章:

PHP 排行榜没有显示正确的方式

mysql - 仅根据数据而不是日期和时间搜索 MySQL 数据库

php - 选项值未提交到 MySQL 数据库 PHP

mysql - 在表上插入时创建触发器,根据另一个(第三个)表上的行数在另一个表上创建新行

php - 如何遍历一组动态表单输入并将它们插入到多个表中?

php - 多个 mysql 表 vs 单表设计

php - 在 PHP 中子类的构造函数中必须调用 parent::__construct 吗?

php - 如何将子菜单添加到 WordPress 管理栏

php - cakephp2.1 中的数据获取问题

mysql - PHP/Laravel - 查询从另一个表获取行 ID