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

[已解决] 请教:helper文件中load->library报错及foreach问题

[复制链接]
发表于 2010-9-20 13:24:06 | 显示全部楼层 |阅读模式
1、想定义一个全局变量,需要从DB中取数据,按论坛所说建议定义在helper中。
在helper中load->library('database'),但DB相关语句仍不能执行,有什么问题吗?

2、foreach按手册定义,是操作数组的一个拷贝,不过试验以下语句:
$query = $this->db->query(xxx)
foreach($query->result() as $row) {
   $row->name = _myDeal($row->name);
}
return $query->result();

会发现,$row->name实质已经被_myDeal处理过了,是否矛盾?
发表于 2010-9-20 13:31:15 | 显示全部楼层
定义全局变量。我比较喜欢用config文件保存,减少数据库的读取。
 楼主| 发表于 2010-9-20 13:33:42 | 显示全部楼层
因为数据比较多,我是先存到DB中,再缓存到config文件,如果config文件损坏或有更新则从DB中取数据重新生成。
发表于 2010-9-20 14:04:41 | 显示全部楼层
在 helper 需要用 get_instance() 才可以 load 类库和数据库。
PHP复制代码
$CI =& get_instance();
$CI->load->database();
复制代码
 楼主| 发表于 2010-9-20 15:20:10 | 显示全部楼层
多谢Hex、Kinglike!

补充一句,方便后来者:

$CI =& get_instance();
$CI->load->database();

$query = $CI->db->query(xxx)
注意query这一句是$CI,而不是大家常用的$this。
发表于 2010-9-20 15:44:16 | 显示全部楼层
$CI 随意了,只是个变量而已,$a $b 都行。。。
发表于 2012-8-2 13:30:55 | 显示全部楼层
我使用$CI = & get_instance ();的时候页面显示空白,一点出错信息也没有。

本版积分规则