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

时间:2013-12-11 15:01:40

标签: php mysql sql

我有以下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行时会发生这种情况。造成这种情况的原因是什么?如何解决?我需要另一个独特的阵列吗?不确定。

2 个答案:

答案 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']) . "')";

您最好使用PDOprepared 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']."')";