Во-первых, звучит так, как будто вы хотите объект , поскольку вы используете обозначение объекта $row->id
, а не $row['id']
.Это означает, что вам нужно использовать row()
.Это также означает, что, поскольку у вас будет 1 результат, вам не нужен foreach
.
Модель:
public function get_project($userid) {
$q = $this->db->get_where('projects', array('userid', $userid));
if ($q->num_rows() !== 1) {
return false;
}
return $q->row();
}
Контроллер:
$uid = $this->session->userdata('user_id');
if (empty($uid)) {
show_error('user id not set'); // we probably shouldn't have gotten this far
}
$project = $this->projects->get_project($uid);
if ($project === FALSE) {
show_error("no rows in project table for user with id: $uid");
}
$data['details'] = $project;
$this->load->view('design/header', $data);
$this->load->view('design/nav', $data);
$this->load->view('content/dashboard', $data);
$this->load->view('design/footer', $data);
Просмотр:
<p><?php echo $details->id; ?></p>
<p><?php echo $details->someothervar; ?></p>
Хотя этот код может не решить вашу проблему (я предполагаю, что либо нет проектов для пользователя с таким идентификатором, либо сессия uid
установлена неправильно), это поможет вам отладить вещии это хорошая практика, чтобы всегда проверять num_rows()
и чтобы ваши переменные выводили то, что вы ожидаете.Я склонен хранить всех этих проверок в контроллере.