更新数据库字段错误CodeIgniter

时间:2012-07-01 03:08:17

标签: 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

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

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

function update2($data){
   $this->db->update_batch('users',$data, "id");
}

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

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";
}

5 个答案:

答案 0 :(得分:47)

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

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

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

$not[] = $k.'-'.$v;

进入这个:

$not[] = $k2.'-'.$v2;

瞧! “通知”不再出现。 :)

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

我希望我能说清楚。

答案 1 :(得分:2)

刚刚意识到使用foreach 就像M_A_K建议实际上击败了使用update_batch函数的目的。这是因为通过使用foreach,我们实际上是为每个数组元素进行单个更新(而不是批处理)。这与使用CodeIgniter中的(单个)更新功能没什么不同。

答案 2 :(得分:0)

我总是觉得这样做有点脏,但你也总是可以为这一行代码抑制错误!

function update2($data){
   @$this->db->update_batch('users',$data, "id");
}

当然,正确的做法是升级到2.1.3(尚未经过测试或看过,所以我认为它已经修好了。)

答案 3 :(得分:0)

正确的解决方案是从DB_active_rec.php删除第1401-1404行,因为$not变量未在任何地方使用。

答案 4 :(得分:-2)

试着希望它的工作

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

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