如何使用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";
?>
希望有人能帮我解决这个问题。谢谢您。
最佳答案
所以你的意思是当你点击“添加行”并输入额外的数据行,然后点击“提交”时,只有最后一行被插入数据库?
我猜,当您单击“添加行”时,以下HTML将添加到您的表中(与问题中的行相同)
<tr>
<td><input type="checkbox" name="chk"></td>
... and so on
在这种情况下,您的
$_POST['price']
、$_POST['chk']
等可能会被每一行覆盖,因为您现在有多个hanechk
输入。尝试设置
input id="chk[]"
而不是input id="chk"
,然后$_POST['chk']
将是一个数组,每行一个。您可以通过
$_POST['chk'][i]
访问每一行。注释中还有其他一些关于使代码对SQL注入安全的建议,而且
$_POST[price]
(就像在SQL语句中一样)是无效语法;您可能需要$_POST['price']
。(戴达罗斯,马克B,洛斯·弗里乔尔斯)。关于php - 无法找出foreach循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10492018/