用户
 找回密码
 入住 CI 中国社区
搜索
查看: 14608|回复: 3
收起左侧

[数据库] $this->db->update_batch()使用的的问题

[复制链接]
发表于 2013-4-8 06:07:11 | 显示全部楼层 |阅读模式
我的PHP版本是5.4,当使用update_batch批量更新时提示以下错误,

PHP复制代码
 
[b]A PHP Error was encountered[/b][align=left][color=#000]Severity: Notice
Message: Array to string conversion
Filename: database/DB_active_rec.php
Line Number: 1407
复制代码

查找 DB_active_rec.php 1407行发现$v是一个数组,我把else代码注释掉就正常了,不知道这个$not有什么使用?

PHP复制代码
 
        public function set_update_batch($key, $index = '', $escape = TRUE)
        {
                $key = $this->_object_to_array_batch($key);
 
                if ( ! is_array($key))
                {
                        // @todo error
                }
 
                foreach ($key as $k => $v)
                {
                        $index_set = FALSE;
                        $clean = array();
 
                        foreach ($v as $k2 => $v2)
                        {
                                if ($k2 == $index)
                                {
                                        $index_set = TRUE;
                                }
                        /*      else
                                {
                                        $not[] = $k.'-'.$v;
                                }*/

 
                                if ($escape === FALSE)
                                {
                                        $clean[$this->_protect_identifiers($k2)] = $v2;
                                }
                                else
                                {
                                        $clean[$this->_protect_identifiers($k2)] = $this->escape($v2);
                                }
                        }
 
                        if ($index_set == FALSE)
                        {
                                return $this->display_error('db_batch_missing_index');
                        }
 
                        $this->ar_set[] = $clean;
                }
 
                return $this;
        }
 
复制代码



发表于 2013-7-11 10:11:55 | 显示全部楼层
看起来确实是一个BUG,这个$not并未初始化,就直接把它当数组处理了,所以会报错。
 楼主| 发表于 2013-7-11 16:13:17 | 显示全部楼层
gogogo1027 发表于 2013-7-11 10:11
看起来确实是一个BUG,这个$not并未初始化,就直接把它当数组处理了,所以会报错。 ...

不管它了直接注释掉了,哈哈~~
发表于 2014-1-16 10:25:40 | 显示全部楼层
遇到了同样的问题,请教师傅后将1407行改成
$not[]=$k.'-'.$v2;
后无有报错了,但是师傅不肯告诉我原因
个人认为因为$v是个数组,$v2是抽取出来的字符,$k不能串起一个数组所以报错。
$not是某种校验吧,可以的化话尽量不要屏蔽比较好。

本版积分规则