我使用$this->db->update();函数通过Codeigniter更新表中的字段.我有以下模型函数来执行此操作:

function addBills($fdata) {    
    if (!empty($fdata)) {    
        if ($this->db->affected_rows()) {
            if ($this->db->update('store_update_stock', array('bill_status'=>'Added'),
                array('update_stock_id' => $fdata['bill_id']))) {
                return true;
            }               
        }
    }
    return FALSE;
}

例如,$fdata包含一个Bill_id,例如:805,它与我的表中的UPDATE_STOCK_ID匹配.如果手动使用,这些值可以正确输出.

在控制器中,我有:

if (!empty($files)) {
    foreach ($files as $fname) {
        $fdata[] = array(
                     'bill_id' => $this->input->post('bill'),
                     'file_name' => $fname,                    
                     'status' => 1
                    );
    }    
    $this->Item_model->addBills($fdata);
}

预期结果

当与表中的UPDATE_STOCK_ID匹配时,我希望将BILL_STATUS更新为"已添加".

输出

没有更新表

Why is the table not updating, when using variable data?

推荐答案

您在进行更新之前呼叫$this->db->affected_rows(),因此总是返回false.您需要更改如下所示的函数顺序:

function addBills($fdata) {    
    if (!empty($fdata)) {           
       $this->db->update('store_update_stock', array('bill_status'=>'Added'), array('update_stock_id' => $fdata['bill_id']));
       if ($this->db->affected_rows()) {
            return true;
        } 
        else { 
            return FALSE;             
        }
    }
}

请参阅:affected_rows()Updating Data


如果我按照您的建议更改代码,则不会得到任何输出.如果我用array('update_stock_id' => 805')硬的 编码,更新运行良好.

这是因为您的数组是按索引返回的.您的控制器函数有一个Foreach循环,其中有一个数组,该数组被编入索引:

foreach ($files as $fname) {
  $fdata[] = array(...);
}

因为您只需要一个Bill_id,所以使用第一个(零索引数组元素):

array('update_stock_id' => $fdata[0]['bill_id']))

Php相关问答推荐

PHP FFI—将PHP数组转换为C指针数组

自定义WooCommerce帐户下载列表

如何修复条带元素中的错误&&客户端_机密&

模式 bootstrap 未显示

根据发货类别在WooCommerce产品页面中显示快捷代码

htaccess重命名index.php以在URL中显示为SEO的友好名称

$this->;db->;update();CodIgnitor中的功能不工作

如何在laravel中获得两个时间戳之间的小时和分钟差异

laravel Eloquent 模型的问题

如何在 Woocommerce 中自动删除旧的已完成订单

PHP访问子数组列表出错结果和长度

使用现有的htaccess的PHP路由脚本

批量作业(job)提交错误无法处理所有文档,uris 似乎正确?

如何在构建 PHP 类别数组树的递归函数中将父面包屑传递给子项?

PHP 中是否有 is_closure() 函数?

转发和非转发呼叫 - 后期静态绑定

如果 static:: 被解析为B,为什么 PHP 会执行A的方法

我想更新表格中的结果并将它们发布到浏览器,但它不起作用

路由未定义的 laravel 导出

PHP - 如何获取发送到脚本的查询参数