0

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

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

第一的

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

它会正常工作

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

-谢谢之前-

4

1 回答 1

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)

于 2013-07-09T15:06:59.183 回答