我有一个带有动态(用户确定的)行数的 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/