我有以下js文件:
function displayResult() {
var table=document.getElementById("addTable");
var row=table.insertRow(2);
var cell1=row.insertCell(0);
var cell2=row.insertCell(1);
cell1.innerHTML="<input type='text' name='expense[]' style='padding:2px;' size='80'>";
cell2.innerHTML="<div align='center'><input type='text' name='expensecost[]' style='padding:2px;' size='6'></div>";
}
这允许我在我的表上添加一个新行。它在下面添加:
<tr>
<td align='left' width='350'>
<input type='text' name='expense[]' style='padding:2px;' size='80'>
</td>
<td align='center' width='100'>
<input type='text' name='expensecost[]' style='padding:2px;' size='6'>
</td>
</tr>
点击此按钮:
<button type='button' onclick='displayResult()'>Add Expense</button>
一切正常。但是,当我添加新行并使用以下内容将它们插入数据库时
foreach ($_POST['expense'] as $index => $id) {
$sql="INSERT into b_report_expense2 (TASK_ID,EXPENSE_DESC,EXPENSE_COST,REF)
VALUES ('$_POST[taskid]','$_POST[expense][$index]',
'$_POST[expensecost][$index]','$_POST[refid]')";
}
它添加了taskid和refid,但是费用和费用花费却说:
| Array[0] | 0
| Array[1] | 0
| Array[2] | 0
当我尝试显然添加3行时会发生这种情况。造成这种情况的原因是什么?如何解决?我需要另一个独特的阵列吗?不确定。
答案 0 :(得分:1)
尝试将SQL更新为
$sql="INSERT into b_report_expense2 (TASK_ID,EXPENSE_DESC,EXPENSE_COST,REF)
VALUES (
'" . mysql_real_escape_string($_POST['taskid']) . "',
'" . mysql_real_escape_string($_POST['expense'][$index]) . "',
'" . mysql_real_escape_string($_POST['expensecost'][$index]) . "',
'" . mysql_real_escape_string($_POST['refid']) . "')";
您最好使用PDO和prepared statements
答案 1 :(得分:0)
我更愿意在HTML输出中添加元素编号。
<input type='text' name='expense[0]' style='padding:2px;' size='80'>
我还会将$ sql变量更改为:
$sql="INSERT into b_report_expense2 (TASK_ID,EXPENSE_DESC,EXPENSE_COST,REF) VALUES('".$_POST['taskid']."','".$_POST['expense'][$index]."','".$_POST['expensecost'][$index]."','".$_POST['refid']."')";