我有一个 HTML 表单,我使用“foreach”循环从数据库填充该表单,因此名称中的字段具有相同的名称。我想要回发到数据库的数据来自数组变量。此时,当我插入数据库时,我得到了正确的插入次数,只有插入的值(在本例中为 4 次)是相同的值,如 HTML 表单的最后一行。
我尝试过内爆,甚至从 VAR 中提取值,但我确信我走错了路。
if(isset($_GET['submit']))
{
$client_id = ($value->ID);
$qry = "INSERT INTO salesorder (client_id)
VALUES ('$client_id')";
$result = mysqli_query($mysql,$qry) or die(mysqli_error($mysql));
$order_id = mysqli_insert_id($mysql);
foreach ($results as $result) :
$food_id = $_GET['foodid'];
print_r($food_id);
$qty = $_GET['qty'];
$qry="INSERT INTO orderline (order_id, food_id, qty) VALUES ($order_id, '$food_id', '$qty') ";
$result = mysqli_query($mysql,$qry);
endforeach;
}
<tbody>
<form action="" method="GET">
<?php foreach ( $results as $result ) : ?>
<tr>
<td><input name="qty" size="2" type="number"></td>
<td><?php print($result->food_type); ?></td>
<td><input name="foodid[]" size="4" type="number" value=<?php print($result->food_id); ?>></td>
<tr>
<?php endforeach; ?>
</tbody>
这就是表格的样子:
因此,表单首先从数据库动态加载。可以是 2 行,也可以是 50 行... 但我的问题是,在客户填写了他想要下订单的数量后,“读取”整个表格,并将其加载回数据库
如果您从 HTML 表单中获取一个数组,那么您需要循环该数组并将每一行单独插入到数据库中。为此,您需要使用准备好的语句和循环。
if (isset($_GET['submit'])) {
$client_id = $value->ID; // Wherever this value comes from...
// Insert new sales order
$stmt = $mysql->prepare('INSERT INTO salesorder (client_id) VALUES (?)');
$stmt->bind_param('s', $client_id);
$stmt->execute();
$stmt->store_result();
$order_id = $mysql->insert_id;
// prepare the SQL statement
$orderline_stmt = $mysql->prepare('INSERT INTO orderline (order_id, food_id, qty) VALUES (?,?,?)');
// loop on each element from HTML form
// i.e. <input name="foodid[]" >
foreach ($_GET['foodid'] as $key => $food_id) {
$qty = $_GET['qty']; // should this be an array too?
// $qty = $_GET['qty'][$key]; <-- if it's also an array
$orderline_stmt->bind_param('sss', $order_id, $food_id, $qty);
$orderline_stmt->execute();
}
}
我不确定您的 HTML 是什么样子,但所有输入具有相同的名称并不一定意味着它们已成为数组。您需要使用
[]
将它们定义为 HTML 中的数组。下面是一个例子
HTML
<form method="post" name="myform">
<input type="text" name="array[]" Value="101"/>
<input type="text" name="array[]" Value="102"/>
<input type="text" name="array[]" Value="103"/>
<input type="text" name="array[]" Value="104"/>
<input type="submit" name="submit" Value="submit"/>
</form>
PHP
if(isset($_POST['submit'])){
foreach($_POST['array'] as $myarray) {
echo $myarray.'<br>';
}
这应该让你从每个输入中获得唯一的值,然后你可以用它做你想做的事。
这里是其他几个可以提供帮助的解决方案的链接:Post text box array in PHP