我有一个带有动态(用户确定)行数的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)
";
}
}
?>
使用此查询 - 循环内部或外部 - 我只插入最后一行输入的值;有人可以用一个例子来解释如何 构造一个查询来插入多个行项目和相应的查询?非常感谢你。
答案 0 :(得分:0)
在循环内部,你会在帖子的每一行得到一行 - 在循环外你只会插入最后一行。
如果你只需要最后一行 - 那么就没有必要遍历整个集合来获取它。
您可以计算行数 - 然后直接定位最后一行 - 请参阅php
count()
答案 1 :(得分:0)
更改行
$lineItems[] = "('$customer', '$date', '$time', '$fee')";
到
$lineItems[] = "(".$customer.",".$date.",".$time.",".$fee.")";