2011-02-07 3 views
0

これはいつも起こり、私はなぜそれが起こっているのか全く分かりません。ここに私のモデルでは、クエリは次のとおりです。非オブジェクトを返すCodeigniter

$query = $this->db->query('SELECT * FROM members WHERE email = "' . $this->session->userdata('email') . '"'); 
     return $query; 

私は私の見解では、出力にこれを試してみてください。

foreach($query->result() as $row) {...echo $row->name, etc.} 

しかし、私はエラーを取得する:

Fatal error: Call to a member function result() on a non-object ... 

私はプロファイラを実行し、私のクエリが有効で、データベースにプルされるデータがあります。それで私は何が間違っているのですか?

+1

は正直に、私たちは十分にあなたを支援するために、より多くのコードが必要です。 – jondavidjohn

+0

正確な複製http://stackoverflow.com/questions/4714802/codeigniter-problem-retrieving-and-displaying-data-from-db – jondavidjohn

+0

違反はありませんが、解決策は異なります。受け入れられる2つのソリューションの違いを参照してください。 – sehummel

答えて

3

これを試してみてください。お使いのモデルで

あなたのコントローラで

function get_members() 
{ 
    $query = $this->db->query('SELECT * FROM members WHERE email = "' . $this->session->userdata('email') . '"'); 
    return $query->result(); 
} 

あなたはそのようにのようなあなたのビューに、あなたのコントローラ内のデータベースからデータを割り当てる必要があります。あなたのビューで

$data['query'] = $this->yourmodel->get_members(); // Data['query'] will be turned into $query in your view. 

$this->load->view('mytemplate', $data); 

foreach($query as $row) {...echo $row->name, etc.} 
+0

パーフェクト。ありがとう、ドウェイン! – sehummel

0

$query変数をビューに渡す場合、codeigniterはオブジェクトをキー配列に変換します。

http://codeigniter.com/user_guide/general/views.html

Note: If you use an object, the class variables will be turned into array elements.

編集:あなたのコントローラで

:ビューで

$query = // do whatever to get the $query. 
$members = array(); 
foreach($query->result() as $row) { 
    $members[] = $row; 
} 
//send $members to view 

foreach($members as $member) { 
    echo $member['name']; // etc 
} 
+0

どうすればいいですか?私はこれにいくつかの同様のコードを持って、それは正常に動作します。適切なことは何ですか。初心者ここに。 – sehummel

+0

モデルまたはコントローラ内でクエリを実行し、代わりにモデルオブジェクトまたは値の配列をビューに渡す必要があります。ビューはちょうどダムデータディスプレーヤーでなければなりません。 – Finbarr

+0

どうすればいいですか?私の無知のために申し訳ありません。 – sehummel

関連する問題