2012-05-08 73 views
2

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

<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

所以......它工作吗?如果没有,出了什么问题?这是一个MySQL错误,在这种情况下是什么'mysql_error()'?或者它运行但没有给你预期的结果,在这种情况下,你得到了什么结果,你期望什么? (你的问题到底是什么?) –

+1

关于你的代码的问题,但不是你的问题,你的代码很容易受到SQL注入的影响;有人可以轻松地破解你的数据库并删除你的所有记录。你总是想逃避你传入的数据。 – Daedalus

+0

@ mathematical.coffee它运行并没有得到任何错误,但是当我添加新的行表只有数据将进入数据库,数据才会显示。 – Syida

回答

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)。