longjianghu 发表于 2013-4-8 06:07:11

$this->db->update_batch()使用的的问题

我的PHP版本是5.4,当使用update_batch批量更新时提示以下错误,


A PHP Error was encounteredSeverity: NoticeMessage: Array to string conversionFilename: database/DB_active_rec.phpLine Number: 1407

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


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



gogogo1027 发表于 2013-7-11 10:11:55

看起来确实是一个BUG,这个$not并未初始化,就直接把它当数组处理了,所以会报错。

longjianghu 发表于 2013-7-11 16:13:17

gogogo1027 发表于 2013-7-11 10:11 static/image/common/back.gif
看起来确实是一个BUG,这个$not并未初始化,就直接把它当数组处理了,所以会报错。 ...

不管它了直接注释掉了,哈哈~~

张中飞 发表于 2014-1-16 10:25:40

遇到了同样的问题,请教师傅后将1407行改成
$not[]=$k.'-'.$v2;
后无有报错了,但是师傅不肯告诉我原因:Q:L
个人认为因为$v是个数组,$v2是抽取出来的字符,$k不能串起一个数组所以报错。
$not是某种校验吧,可以的化话尽量不要屏蔽比较好。
页: [1]
查看完整版本: $this->db->update_batch()使用的的问题