【发布时间】:2017-01-13 18:22:37
【问题描述】:
我有一个使用 php 和 jQuery 创建的多行动态表。这里是the link to view the table。
一切正常,除了当我将数据插入数据库时,序列号不按顺序保存。我的插入查询如下:
for($i = 0; $i < count($_POST['C_Objectives']); $i++)
{
$sql = "INSERT INTO Appraisal_Objectives (Serial_Number,Objectives,Measures,Targets,subtotal,Corporate_Objective,Row_Number,ID) Values ('$formno','||<==','==','==','".$_POST['SubTotals'][$i]."','".$_POST['C_Objectives'][$i]."','".$_POST['SNo'][$i]."','$statement')";
$stmt = sqlsrv_query($conn, $sql);
if($stmt === false)
die(print_r(sqlsrv_errors(), true));
else
echo " ";
}
for($i = 0; $i < count($_POST['Measures']); $i++)
{
$sql = "INSERT INTO Appraisal_Objectives (Serial_Number,Objectives,Measures,Targets,Weightage,Row_Number,target_date,ID) VALUES ('$formno','".$_POST['Objectives'][$i]."','".$_POST['Measures'][$i]."','".$_POST['Achievement'][$i]."','".$_POST['Weightage_Target'][$i]."','".$_POST['SNo'][$i]."','".$_POST['Date_Target'][$i]."','$statement')";
$stmt = sqlsrv_query($conn, $sql);
if($stmt === false)
die(print_r(sqlsrv_errors(), true));
else
echo " ";
}
序列号保存在Row_Number 列中,使用$_POST['SNo'][$i]。是否可以使用 1 个插入查询保存两个动态行,以便按顺序保存序列号?
这是$_POST 数组结果:
[Row_Number] => Array
(
[0] => 1
[1] => 2
)
[C_Objectives] => Array
(
[0] => A
[1] => B
)
[Objectives] => Array
(
[0] => a1
[1] => a4
[2] => a7
[3] => b1
)
[Measures] => Array
(
[0] => a2
[1] => a5
[2] => a8
[3] => b2
)
[Achievement] => Array
(
[0] => a3
[1] => a6
[2] => a9
[3] => b3
)
[Date_Target] => Array
(
[0] => 2016-09-09
[1] => 2016-09-09
[2] => 2016-09-09
[3] => 2016-09-09
)
[Weightage_Target] => Array
(
[0] => 25
[1] => 25
[2] => 25
[3] => 25
)
[SNo] => Array
(
[0] => 3
[1] => 4
[2] => 5
[3] => 6
)
[SubTotals] => Array
(
[0] => 75
[1] => 25
)
[GrandTotal] => 100
)
我也尝试过使列自动递增,但保存数据的顺序与在前端输入时的顺序不同。
【问题讨论】:
-
因为
$formno用于序列号。所以总是会保存相同的值。 -
序列号保存在Row_Number中为
$_POST['SNo'][$i] -
使用连接创建一个插入查询并一次调用它。
-
@SR1092 显示
echo "<pre/>";print_r($_POST);的值 -
如果我理解正确,您应该修改表格以使序列号字段成为自动递增的数字。那么你在插入记录时不需要处理任何事情。另外还不清楚为什么需要在表中进行两次不同的插入?
标签: php sql-server