我试图通过使用数组来更新数据。基础是我有一个表格如下:
|| idtest || testfieldA || testfieldB || testfieldC || externalId ||
其中idtest是主键,外部id是与另一个表的主键相关的id,因此行idtest = 1,2和3 coul的数据值可能共享相同的外部id。
因此我的目标是更新其中的数据。我创建的表单元素如下所示:
$sql = "SELECT * FROM test.test WHERE externalId = $callID";
$r = mysqli_query($conn, $sql) or die(mysqli_error($conn));
for ($tcount =1; $rowTest = mysqli_fetch_assoc($rtest); $tcount++){
$idtest = $rowTicket['idtest'];
$testfieldA = $rowTicket['testfieldA'];
$testfieldB = $rowTicket['testfieldB'];
$testfieldC = $rowTicket['testfieldC'];
$externalid = $rowTicket['externalId'];
echo "<div>";
echo "<input type='hidden' name='idtest' value='$idtest'>";
echo "<input type='text' name='testfieldA[$tcount]' value='$testfieldA'>";
echo "<input type='number' step='0.01' min='0' name='testfieldB[$tcount]' value='$testfieldB'>";
echo "<input type='number' name='testfieldC[$tcount]' value='$testfieldC'>";
echo "<input type='hidden' name='externalId' value='$externalid'>";
echo "</div>";
}
将回显带有name = name [e]的表单标记,例如返回编号的初始值。我也没有为idtest做名称= idtest [],因为它每次都是唯一的。
所有这一切都很好,当它被一个将它链接到updatetest.php?callid =#的onclick函数调用时,它回应了我想要的数据。但是,我现在想要更新内容。我正在尝试的系统是调用while循环,如下所示:
$e = 0;
$more = TRUE;
$idtest = $_POST['idtest'];
while($more){
if(isset($_POST['testfieldA'.$e]) && isset($_POST['testfieldB'.$e]) && isset($_POST['testfieldC'.$e])){
$test1 = $_POST['testfieldA'.$e];
$test1 = trim($test1);
$test2 = $_POST['testfieldB'.$e];
$test2 = trim($test2);
$test3 = $_POST['testfieldC'.$e];
$test3 = trim($test3);
$sql = "UPDATE test.test SET testfieldA = ?, testfieldB = ?, testfieldC= ? WHERE idtest = ?";
$stmt = mysqli_prepare($conn, $sql) or die(mysqli_error($conn));
mysqli_stmt_bind_param($stmt, "sssd", $test1, $test2, $test3, $idtest) or die(mysqli_error($conn));
mysqli_stmt_execute($stmt) or die(mysqli_error($conn));
mysqli_stmt_close($stmt);
} else {
$more = FALSE;
}
}
$e++;
但是,这不会运行。循环每个名称并获取数字的有效方式是什么,只要名称存在,就更新数据?顺便说一句,如果这个问题看起来不清楚,我很难说出来。
答案 0 :(得分:1)
在HTML表单中以这种方式写入输入:
echo "<input type='text' name='testfield1[]' value='$testfield1'>";
直接进行数组转换提交表单。
然后,处理数据,写下这样的东西:
for( $i = 0; $i < count( $_POST['testfield1'] ); $i++ )
{
$test1 = trim( $_POST['testfield1'][$i] );
$test2 = trim( $_POST['testfield2'][$i] );
(...)
}