Codeigniter, возвращающий не объект - PullRequest
0 голосов
/ 08 февраля 2011

У меня такое случается постоянно, и я никогда не до конца понимаю, почему это происходит. Вот запрос в моей модели:

$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 ...

Я запустил профилировщик, и мой запрос действителен, и в базе данных есть данные, которые нужно извлечь. Так что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 08 февраля 2011

Попробуйте это.

В вашей модели:

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 голосов
/ 08 февраля 2011

Если вы передаете переменную $query в представление, codeigniter преобразует ее в массив с ключами, если это объект.

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

Примечание:Если вы используете объект, переменные класса будут превращены в элементы массива.

Edit:

В вашем контроллере:

$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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...