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

[已解决] 多字段查询,结果中访问不到属性

[复制链接]
发表于 2010-5-29 17:29:23 | 显示全部楼层 |阅读模式
PHP复制代码
 
$this->load->database();
               
                $this->db->select('title','keywords');
                //$this->db->select('keywords');
                $this->db->from('site');
                $query = $this->db->get();
                $data['query'] = $query;
               
                $this->load->view('result',$data);
 
复制代码

PHP复制代码
 
<?php foreach ($query->result() as $row):?>
<p>
        <span style="color:#0f0"><?php echo $row->title?></span>
        <span style="color:#0f0"><?php echo $row->keywords?></span>
</p>
<?php endforeach;?>
 
复制代码


如果使用
PHP复制代码
$this->db->select('title','keywords');
复制代码


在view中访问除第一个属性外就会说
PHP复制代码
 
A PHP Error was encountered
 
Severity: Notice
 
Message: Undefined property: stdClass::$keywords
 
Filename: views/result.php
 
Line Number: 11
 
 
复制代码


如果用:
PHP复制代码
 
$this->db->select('title');
$this->db->select('keywords');
 
复制代码

写2条语句就能访问到
郁闷,这是啥原因,
我看电子书教程里一次查好几个:
PHP复制代码
 
$this->db->select('url','name','clientid','people.surname AS client');
 
复制代码

我的版本是1.7.2 xampp集成环境 5.3的php
 楼主| 发表于 2010-5-29 17:37:53 | 显示全部楼层
汗,刚才去找了下源代码看了下
select的定义如下
PHP复制代码
 
function select($select = '*', $escape = NULL)
        {
                // Set the global value if this was sepecified 
                if (is_bool($escape))
                {
                        $this->_protect_identifiers = $escape;
                }
               
                if (is_string($select))
                {
                        $select = explode(',', $select);
                }
 
                foreach ($select as $val)
                {
                        $val = trim($val);
 
                        if ($val != '')
                        {
                                $this->ar_select[] = $val;
 
                                if ($this->ar_caching === TRUE)
                                {
                                        $this->ar_cache_select[] = $val;
                                        $this->ar_cache_exists[] = 'select';
                                }
                        }
                }
                return $this;
        }
 
复制代码

这里只接受2个参数,select多字段查询是通过逗号分隔,跟sql语句一样,为啥翻译的那本书上要写

PHP复制代码
$this->db->select('url','name','clientid');
 
复制代码

难道是ci版本问题?
发表于 2010-5-29 21:32:37 | 显示全部楼层
这是个这本书(原书)的错误,已经记录在勘误表中,下次发布会更新的。

本版积分规则