【发布时间】:2012-05-08 03:04:45
【问题描述】:
如何使用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";
?>
希望有人可以帮助我解决这个问题。谢谢。
【问题讨论】:
-
那么...它有效吗?如果没有,有什么问题?是否是 MySQL 错误,在这种情况下,
mysql_error()是什么?或者它运行但没有给你预期的结果,在这种情况下你得到什么结果,你期望什么? (你的问题到底是什么?) -
关于您的代码主题,但不是您的问题,您的代码很容易受到 SQL 注入;有人可以轻松破解您的数据库并删除您的所有记录。你总是想逃避传入的数据。
-
@mathematical.coffee 它已运行并且没有出现任何错误,但是当我添加新行表时,只有该数据将进入数据库,它之前的数据不会显示。
-
在一个 mysql 调用中指定 $con 而在其他调用中不指定,如果您打开了多个连接,可能会导致非常不稳定的问题。要么在任何地方使用 $con 选项,要么根本不使用它。
-
在您的字符串 $sql1 中,您应该像这样在单引号内引用您的数组:{$_POST['item_description']}(注意大括号和字段名称周围的引号)。此外,您需要使用 mysql_real_escape_string 而不是实际将 post 值放在那里,因为您目前容易受到 mysql 注入的影响。