首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于从表单中选择的数组更新字段

基于从表单中选择的数组更新字段
EN

Stack Overflow用户
提问于 2013-12-08 19:32:54
回答 1查看 28关注 0票数 0

我在while循环中有一个复选框列表。代码是:

代码语言:javascript
复制
$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 />";  
        }

这只是一小段代码,但我想做的是,在处理页面上,我想更新数据库中的一个字段(发票字段),从0到1的基础上,复选框被勾选。我试过了:

代码语言:javascript
复制
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子句,但不确定如何才能对每个选中的复选框执行此操作。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2013-12-08 19:37:35

UPDATE语句中缺少WHERE子句,这就是更新所有记录的原因。试试这个:

代码语言:javascript
复制
UPDATE b_report_week SET INVOICED = 1 WHERE `ID` = $id

但是,更好的方法是只执行一条UPDATE语句,而不是像下面这样在循环中调用UPDATE语句:

代码语言:javascript
复制
UPDATE b_report_week SET INVOICED = 1 WHERE `ID` IN (2,5,8)

此处2、5、8是所选复选框的ID

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20452931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档