URI для получения данных базы данных (CodeIgniter) - PullRequest
0 голосов
/ 14 января 2012

Поэтому я пытаюсь использовать функциональность сегмента URI CodeIgniter. У меня есть сегменты URI, используемые в качестве идентификаторов для получения информации из базы данных. Он работает нормально, но я заметил, что если я добавлю идентификатор, которого нет в базе данных, он выдаст ошибку базы данных.

Как мне предотвратить это?

Код модели:

$query = $this->db->select('*')
    ->from('questions')
    ->where('questions.id', $question_id)
    ->join('users', 'users.id = questions.user_id')
    ->get();
return $query->row();

вызов модели в контроллере:

$question_id = $this->uri->segment(3);
$data['question'] = $this->forum_model->get_question($question_id);

Ошибка PHP:

Обнаружена ошибка PHP
Серьезность: Уведомление
Сообщение: попытка получить свойство необъекта

Ответы [ 2 ]

0 голосов
/ 15 января 2012

для отладки просто сделай это ...

    //if this gives u no result, then thats the problem because it couldnt find the 
    //$this->uri->segment(3);
$question_id = $this->uri->segment(3);
echo $question_id; 

//if this prints out the expected result.
//then you should know that the problem is still somewhere down the code.
$data['question'] = $this->forum_model->get_question($question_id);
var_dump($data['question']);


//this is for your model.
echo $question_id
$query = $this->db->select('*')
    ->from('questions')
    ->where('questions.id', $question_id)
    ->join('users', 'users.id = questions.user_id')
    ->get();
return $query->row();

ПРИМЕЧАНИЕ: если все эти эхо-сигналы выводят действительные значения, то найдите проблему в другом месте

0 голосов
/ 14 января 2012

Вам необходимо проверить, дал ли запрос какие-либо результаты, прежде чем вызывать $ query-> row

Способ сделать это:

$query = $this->db->select('*')
    ->from('questions')
    ->where('questions.id', $question_id)
    ->join('users', 'users.id = questions.user_id')
    ->get();
    if($query->num_rows() > 0)
          return $query->row();
    else
          return false;

$ query-> num_rows () будетдаст вам количество возвращенных строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...