从php foreach插入多行

时间:2014-02-28 18:27:17

标签: php mysql

我有一个带有动态(用户确定)行数的html表单,每行有几个输入;我正在尝试实现一个将插入行的MySQL查询 进入db表,或多或少row-for-row(尽管从这个表外部有一个值$ _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)
            ";

        }
    }
?>

使用此查询 - 循环内部或外部 - 我只插入最后一行输入的值;有人可以用一个例子来解释如何 构造一个查询来插入多个行项目和相应的查询?非常感谢你。

2 个答案:

答案 0 :(得分:0)

在循环内部,你会在帖子的每一行得到一行 - 在循环外你只会插入最后一行。

如果你只需要最后一行 - 那么就没有必要遍历整个集合来获取它。

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

count() 

答案 1 :(得分:0)

更改行
$lineItems[] = "('$customer', '$date', '$time', '$fee')";
$lineItems[] = "(".$customer.",".$date.",".$time.",".$fee.")";