Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新数据库字段错误代码点火器_Php_Mysql_Codeigniter_Codeigniter 2 - Fatal编程技术网

Php 更新数据库字段错误代码点火器

Php 更新数据库字段错误代码点火器,php,mysql,codeigniter,codeigniter-2,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 我正在尝试更新数据库中的字段。我有这个代码,每个教程都是一样的批量上传。不管怎样,它都能工作,但问题是它显示了这样一个错误 这就是我的模型中的内容: functi

我在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";
}
试试这个,希望它能起作用

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


只是在这里偶然发现了完全相同的问题。幸运的是,我使用的是相同的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进行迭代


我希望我说的很清楚。

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

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

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

当然,正确的做法是升级到2.1.3(还没有测试或看起来还不错,所以我假设它是固定的。)

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

您正在运行哪个版本的CodeIgniter?您可以通过哑巴问题看到这一点,但是如果您在update2()中的update\u批处理调用的正上方执行($data)的print\r或var\u导出,您是否得到了传入的相同数组?为update编写的指令是错误的,您应该使用where条件查看文档好的,不用担心。刚刚在测试中再次出现错误(不确定为什么我昨天没有看到)。显然在2.1.3中没有修复。我将使用错误抑制-/这仅在2013年7月8日发布的CI 2.1.4中针对仍在使用2.1.3并遇到此问题的用户进行了修复。为什么不删除这些行$not不适用于任何地方。检查下面我的答案。
function update2($data){
   @$this->db->update_batch('users',$data, "id");
}