我有一个while循环中的复选框列表。代码是:
$result = mysqli_query($con,"SELECT a.*,b.* FROM b_report_week a INNER JOIN b_report_expenses b ON a.ID = b.ID WHERE a.TASK_ID=$taskid");
while($row = mysqli_fetch_array($result))
{
$invoiceID = $row['ID'];
$invoiced = $row['INVOICED'];
$mondayBill = number_format($row['MON_BILL'],2);
}
if ($invoiced == 0){
print "<input type='checkbox' name='rep[]' value='$invoiceID'>Reference Number: $invoiceID<br />";
}
elseif ($invoiced == 1){
print "<em>Reference Number: $invoiceID has already been invoiced</em><br />";
}
这只是代码的片段,但我想要做的是,在处理页面上,我想根据勾选的复选框将数据库(INVOICED字段)中的字段从0更新为1。我试过了:
foreach ($_POST['rep'] as $index => $id) {
$sql4="UPDATE b_report_week SET INVOICED = 1 ";
if (!mysqli_query($con,$sql4))
{
die('Error: ' . mysqli_error($con));
}
}
然而,这会更新显示的所有复选框,我知道我需要一个WHERE子句,但不知道如何根据选中的复选框执行此操作。
任何帮助都将不胜感激。
答案 0 :(得分:0)
UPDATE语句中缺少WHERE子句,这就是更新所有记录的原因。试试这个:
UPDATE b_report_week SET INVOICED = 1 WHERE `ID` = $id
但是,更好的方法是只执行一个UPDATE语句,而不是像这样在循环中调用UPDATE语句:
UPDATE b_report_week SET INVOICED = 1 WHERE `ID` IN (2,5,8)
此处2,5,8是所选复选框的ID