更新数据库字段错误CodeIgniter

Cha*_*mie 13 php mysql codeigniter codeigniter-2

我在CodeIgniter 2.1中收到以下错误消息:

A PHP Error was encountered

Severity: Notice

Message: Array to string conversion

Filename: database/DB_active_rec.php

Line Number: 1407
Run Code Online (Sandbox Code Playgroud)

我正在尝试更新数据库中的字段.我有这个代码,每个教程对于批量上传都是一样的.无论如何它仍然有效但事情是它显示这样的错误.

这就是我在我的模型中所拥有的:

function update2($data){
   $this->db->update_batch('users',$data, "id");
}
Run Code Online (Sandbox Code Playgroud)

这就是我在我的控制器中所拥有的:

public function updateValues(){
    $this->load->model('get_db');
    $newRow = array(
        array(
            'id' => '3',
            'firstname' => 'Rapphie'
        ),
        array(
            'id' => '2',
            'firstname' => 'Charmie'
        )
    );
    $this->get_db->update2($newRow);
    echo "it has been updated";
}
Run Code Online (Sandbox Code Playgroud)

Ami*_*din 47

在这里偶然发现了同样的问题.幸运的是,我使用的是相同的CI版本.:)

确实,M_A_K的答案有助于删除"通知",但我不认为这是解决问题的正确方法.所以我决定看看行1407DB_active_rec.php,我相信,这不过是一个小错误在CI 2.1.2.

这是我的修复.我只是更改了原始代码:

$not[] = $k.'-'.$v;
Run Code Online (Sandbox Code Playgroud)

进入这个:

$not[] = $k2.'-'.$v2;
Run Code Online (Sandbox Code Playgroud)

瞧!"通知"不再出现.:)

我们可以清楚地看到1407行并不意味着使用$ k和$ v,因为1407行是在foreach循环内部迭代$ v作为$ k2和$ v2.

我希望我能说清楚自己.

  • 这只在2013年7月8日发布的CI 2.1.4中得到修复,适用于仍在使用2.1.3且遇到此问题的任何人. (4认同)

M_A*_*A_K -2

试试这个希望它有效

function update2($data){
   foreach($data as $string_val){
   $this->db->update_batch('users',$string_val, "id");
    }
}
Run Code Online (Sandbox Code Playgroud)

或者

function update2($data){
   foreach($data as $string_val){
   $this->db->update_batch('users',$string_val->first_name, "id");
    }
}
Run Code Online (Sandbox Code Playgroud)