添加新的HTML行&;插入数据库


Add New HTML Row & Insert Into Database

我有以下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并重新进行了罚款,但对于费用和支出成本,它说:

|  Array[0]  | 0
|  Array[1]  | 0
|  Array[2]  | 0

很明显,当我尝试添加3行时会发生这种情况。造成这种情况的原因是什么?我该如何解决?我需要另一个唯一的数组吗?不确定。

尝试将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和准备好的语句

我更喜欢在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']."')";