【问题标题】:select all and some attribute from a table get different result in codeigniter从表中选择所有和某些属性在 codeigniter 中得到不同的结果
【发布时间】:2013-07-09 14:47:10
【问题描述】:

我尝试使用模式选择所有属性从 codeigniter 中的 sql 查询中获取结果,但它返回 PHP 错误,但是当我指定某些属性时给出正确答案但查询太长而无法编写。

这 2 种模式选择,我尝试过并给出不同的结果。

第一

class model_kemiskinan 扩展 CI_Model {

..... //这里是构造函数

function get_kemiskinan_provinsi(){
    $this->tahun = "2011";
    $this->kodeProv = "31";        
    $this->query = "select * from kemiskinan where id_provinsi = ".$this->kodeProv." and tahun = ".$this->tahun;        
    $this->result = $this->db->query($this->query);                
    return $this->result->result();
}

然后控制器通过它

public function testquery(){        
    $this->load->model('model_kemiskinan');                
    $data['hasil'] = $this->model_kemiskinan->get_kemiskinan_provinsi();        
    $data['main_content'] = 'test';        
    $this->load->view('template', $data);       
}

视图“测试”用以下代码响应它:

if(is_array($hasil)){        
    foreach ($hasil as $baris ) {            
        echo $baris->tahun;
        echo $baris->id_provinsi;            
        echo "<br/>";
    }

结果是这样的

A PHP Error was encountered 
Severity: Notice 
Message: Undefined property: stdClass::$tahun

第二

但如果我改变如下所示的选择模式:

$this->query = "select tahun, id_provinsi from kemiskinan where id_provinsi = ".$this->kodeProv." and tahun = ".$this->tahun;        

它会正常工作

有没有关于全选模式的解决方案?

-之前谢谢-

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    如文档 (http://ellislab.com/codeigniter/user-guide/database/examples.html) 所说:

    $query = $this->db->query('SELECT name, title, email FROM my_table');
    
    foreach ($query->result() as $row)
    {
        echo $row->title;
        echo $row->name;
        echo $row->email;
    }
    
    echo 'Total Results: ' . $query->num_rows();
    

    调用 result() 只能得到一行,所以你需要通过 foreach 调用它:

    function get_kemiskinan_provinsi(){
        $this->tahun = "2011";
        $this->kodeProv = "31";        
        $this->query = "select * from kemiskinan where id_provinsi = ".$this->kodeProv." and tahun = ".$this->tahun;        
        $this->result = $this->db->query($this->query); 
    
        $res = array();             
        foreach ($this->result->result() as $row)
        {
            $res[] = $row;
        }
        return $res;
    }
    

    请注意结果对象中的字段是区分大小写的!如果你的数据库中有一个名为“Tahun”的字段,那么“select tahun ...”将在 mysql 中工作,并会给你一个可以访问 $res->tahun 的对象。

    如果您执行“选择 * ....”,那么您只能像这样访问它:$res->Tahun (with capial T)

    【讨论】:

    • 在我尝试修改该部分后,仍然出现相同的错误。我的控制器和视图呢? -谢谢之前-
    • 你能做一个 print_r($hasil);请在你看来
    • Array ([0] => stdClass Object ([No] => 55 [Id_provinsi] => 31 [Tahun] => 2011 [Jmlh_Pend_miskin1] => 363.42 [Jmlh_Pend_miskin2] => 0.00 [Jmlh_Pend_miskin3 ] => 363.42 [persentase_pend_miskin1] => 3.75 [persentase_pend_miskin2] => 0.00 [persentase_pend_miskin3] => 3.75 [garis_kemiskinan1] => 355480.00 [garis_kemiskinan2] => 0.00> 0.00> 0.00> 0.00> kempiest => 0.00] > 0.00 [IKP1_3] => 0.60 [IKP2_1] => 0.15 [IKP2_2] => 0.00 [IKP2_3] => 0.15 ) )
    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多