0

mode select all attribute を使用して codeigniter の sql クエリから結果を取得しようとしましたが、PHP エラーが返されますが、いくつかの属性を指定すると正しい答えが得られますが、クエリが長すぎて記述できません。

私が試してみたこの2つのモード選択は、異なる結果をもたらします。

初め

class model_kemiskinan extends 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);       
}

ビュー 'test' は次のコードで応答します。

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

2番

しかし、次のように選択モードを変更すると:

$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() を呼び出すと 1 行しか取得できないため、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 にアクセスできるオブジェクトを提供します。

「select * ....」を実行すると、次のようにしかアクセスできません: $res->Tahun (大文字の T)

于 2013-07-09T15:06:59.183 に答える