那是因为您在 foreach 循环中创建了 SQL 语句。
我还建议使用输入数组(比如$_POST['txtStoreID'][0]
等等......)来让事情变得更容易。
在您的情况下,我假设您的$_POST
-array 中的字段命名如下txtStoreID_1
:
// First, create array for all results
$res_arr = array();
// Load array with all results
foreach ($_POST as $key=>$value) {
$tmp_name = explode('_',$key,2);
$pri_key = $tmp_name[1]; // number
$sec_key = $tmp_name[0]; // name
if (!is_array($res_arr[$pri_key])) {
$res_arr[$pri_key] = array();
}
// This creates for example: $res_arr['1']['txtStoreID'] containing 'Store_31'
$res_arr[$pri_key][$sec_key] = $value;
}
// Next, create insert statements
foreach ($res_arr as $data) { // Now you get $data['txtStoreID'] etc.
$sqli = "INSERT INTO Inspection_tbl (Store_ID, Dept_ID, Quantity, Memo, User_ID, Date_Time) ";
$sqli .= "Values ('".$data['txtStoreID']."', ";
$sqli .= "'".$data['txtDeptID']."', ";
$sqli .= "'".$data['txtQuantity']."', ";
$sqli .= "'".$data['txtMemo']."', ";
$sqli .= "'".$data['txtUserID']."', ";
$sqli .= "'now()')";
echo $sqli; // Check query
}
请注意,这只是关于您的输入字段的计算猜测。
编辑:
除了is_array()
我所做的更改之外,我的猜测是您需要 DeptID,而不是部门的文本值。
所以,代码的底部应该是:
// Next, create insert statements
foreach ($res_arr as $deptID=>$data) { // Now you get $data['txtStoreID'] etc.
$sqli = "INSERT INTO Inspection_tbl (Store_ID, Dept_ID, Quantity, Memo, User_ID, Date_Time) ";
$sqli .= "Values ('".$data['txtStoreID']."', ";
$sqli .= "'".$deptID."', ";
$sqli .= "'".$data['txtQuantity']."', ";
$sqli .= "'".$data['txtMemo']."', ";
$sqli .= "'".$data['txtUserID']."', ";
$sqli .= "'now()')";
echo $sqli; // Check query
}