13

我在 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";
}
4

5 回答 5

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 循环中,它以 $k2 和 $v2 遍历 $v。

我希望我清楚自己。

于 2012-10-16T08:00:44.140 回答
2

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

于 2012-10-29T03:00:31.370 回答
0

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

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

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

于 2013-01-08T23:51:58.987 回答
0

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

于 2017-09-18T02:19:36.820 回答
-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");
    }
}
于 2012-07-02T12:39:59.350 回答