无法弄清楚foreach循环

时间:2012-05-08 03:04:46

标签: php mysql foreach

如何使用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";
?>

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

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

在评论中还有其他建议可以使您的代码对SQL注入安全,并且$_POST[price](就像您在SQL语句中一样)是无效的语法;你可能想要$_POST['price']。 (Daedalus,Marc B,Los Frijoles)。