【问题标题】:Codeigniter's activerecord set() method is treating my values as column names [duplicate]Codeigniter 的 activerecord set() 方法将我的值视为列名 [重复]
【发布时间】:2018-07-06 21:19:04
【问题描述】:

我正在研究 codeigniter 框架。在其中我必须在 db 中编辑具有特定列的行。

我尝试了下面的代码,但它给了我错误:

“字段列表”中的未知列“供应商_1360622286”

UPDATE `vendors`
SET vendor_id = Vendor_1360622286,
    vendor_name = fsd,
    vendor_address = fds,
    vendor_phone = fsdf,
    vendor_email = sdfsdfsd
WHERE `vendor_id` = 'Vendor_1360622286'

代码:

$this->db->set('vendor_id', $data['vendor_id'], FALSE);
$this->db->set('vendor_name', $data['vendor_name'], FALSE);
$this->db->set('vendor_address', $data['vendor_address'], FALSE);
$this->db->set('vendor_phone', $data['vendor_phone'], FALSE);
$this->db->set('vendor_email', $data['vendor_email'], FALSE);
$this->db->where('vendor_id', $data['vendor_id']);
$status = $this->db->update('vendors');

任何想法,为什么它给我错误?

【问题讨论】:

    标签: php mysql codeigniter activerecord sql-update


    【解决方案1】:

    试试这个:

    public function update($data)
             {
                 $db = $this->db;
                 $db->where('vendor_id', $data['vendor_id'])->update('vendors', $data);
    
                 if ($db->affected_rows())
                 {
                     return true;
                 }
                 else
                 {
                     return false;
                 }
             }
    

    数据数组必须包含 id 和你想要更改的所有信息。

    【讨论】:

      【解决方案2】:

      您将第三个参数作为FALSE 传递给set(),因此它不能正确转义字符串值。查询应该是UPDATE vendors SET vendor_id = 'Vendor_1360622286', vendor_name = 'fsd', vendor_address = 'fds', vendor_phone = 'fsdf', vendor_email = 'sdfsdfsd' WHERE vendor_id = 'Vendor_1360622286'

      只需从调用中删除FALSE 参数就可以了。

      【讨论】:

        【解决方案3】:

        试试下面的代码:

        $update_data=array("vendor_id"=> $data['vendor_id'],"vendor_name"=> $data['vendor_name'],"vendor_address"=> $data['vendor_address'],"vendor_phone"=> $data['vendor_phone'],"vendor_email"=> $data['vendor_email']);
        $condi=array("vendor_id"=>$data['vendor_id']);
        $this->db->where($condi);
        $res=$this->db->update("vendors",$update_data);
        if($res)
        echo "Recored Updated";
        else
        echo "Not Updated";
        

        【讨论】:

        • 没有解释为什么 OPs 代码不起作用以及他为什么要编写这段代码?
        猜你喜欢
        • 1970-01-01
        • 2011-05-08
        • 1970-01-01
        • 2019-08-02
        • 2016-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-15
        相关资源
        最近更新 更多