2

如何使用foreach在我的数据库中插入多个数据。
我有一个下拉菜单,form用于通过 js 函数添加和删除行。我想将新行中的数据(在表单中添加)插入到我的数据库中。
这是我的表格:

<form action="insert.php" method="POST">
            <input type="button" value="Add Row" onClick="addRow('tableID')"/>
        <input type="button" value="Delete Row"
onClick="deleteRow('tableID')"/>
<table class="table" bgcolor="#CCCCCC">
<thead>
<tr>
<td></td>
<td><center>Item Description</center></td>
<td><center>Price (RM)</center></td>
<td><center>Month</center></td>
<td><center>Amount (RM)</center></td>
</tr>
</thead>
<tbody id="tableID">
<tr>
<td><input type="checkbox" name="chk"></td>
<td>
<select name="item_description">
    <option value="deposit">Deposit</option>
    <option value="rental">Rental</option>
    <option value="stamp">Stamp Duty</option>
    <option value="process">Process Fee</option>
    <option value="ap">AP</option>
</select>
</td>
<td><input id="price" name="price" type="text"></td>
<td><input id="month" name="qty" type="text"></td>
<td><input id="amount" name="amount" type="text"></td>
</tr>
</tbody>
</table>
</form>

这是我的插入查询:

<?php
//some connection code here
if(isset($_POST['submit']))
{
$item = array(
'item_description' => '',
'price' => '',
'qty' => '',
'amount' => '',
);
foreach ($item as $key => $value){
$value = $_POST[$key];
}
}
$last_insert_payment_id=mysql_insert_id();
$sql1="INSERT INTO payment_item (payment_id, payment_item_id, item_description, price, qty, amount)
VALUES
('$last_insert_payment_id','NULL','$_POST[item_description]','$_POST[price]','$_POST[qty]','$_POST[amount]')";
if (!mysql_query($sql1,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
?>

希望有人可以帮助我解决这个问题。谢谢你。

4

1 回答 1

2

所以你的意思是当你点击“添加行”并输入额外的数据行然后点击“提交”时,只有最后一行被插入到数据库中?

我猜当您单击“添加行”时,以下 HTML 将添加到您的表格中(与您问题中的行相同)

<tr>
<td><input type="checkbox" name="chk"></td>
... and so on

在这种情况下,您的$_POST['price'], $_POST['chk']etc 可能会被每一行覆盖,因为您现在有多个带有 hane 的输入chk

尝试设置你的input id="chk[]"代替input id="chk",然后$_POST['chk']将是一个数组,每行一个。

您可以通过 访问每一行$_POST['chk'][i]

评论中还有其他关于使您的代码对 SQL 注入安全的建议,以及$_POST[price](就像您在 SQL 语句中一样)是无效语法的事实;你可能想要$_POST['price']。(代达罗斯,马克 B,洛斯弗里霍勒斯)。

于 2012-05-08T04:07:47.793 回答