2012-05-08 108 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)。