Erreur PHP: Essayer d'obtenir la propriété de non-objet

Je suis en train de travailler dans le cadre CodeIgniter et j'ai essayé d'appliquer toutes les autres solutions que j'ai trouvé sur la pile, mais je ne pouvais pas le faire fonctionner, donc voici mon problème...
Je suis en train de récupérer un enregistrement de base de données MySQL table appelée "questions" en fonction de l'uri segment. Alors j'essaie d'afficher ce record en vue. Aussi loin que je peux dire, l'uri segment est transmis le long partout où il doit être, et l'enregistrement est extrait de la base de données.
Le problème arrive lorsque je suis en train d'accéder aux données à partir du contrôleur, de mon point de vue.
L'erreur que j'obtiens pour chaque écho dans ma boucle dans 'view_thread_view' est

Une Erreur PHP a été rencontrée

Gravité: Avis

Message: Essayer d'obtenir la propriété de non-objet

Nom de fichier: views/view_thread_view.php

Des solutions serait grandement apprécié.

Voici mon code:

Contrôleur de fil

function view_thread()
    {
        $quest = $this->uri->segment(3);
        echo $quest;//for checking if uri segment is passed

        if($query = $this->data_model->get_thread($quest))
        {
            $data['records'] = $query;      
        }

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

Modèle data_model

public function get_thread($quest)
   {
    if($q = $this->db->get_where('questions' , 'qid' , $quest));
    {
      return $q;
    }
   }

Vue view_thread_view

<div title="question_view">
    <h1>Question View<h1>
        <?php foreach($records as $data) : ?>
        <div>
            <h2>Title</h2>
            <?php 
            echo $data->title;
            ?>
        </div>
        <div>
            <h2>Question</h2>
            <?php
            echo $data->contents
            ?>
        </div>
        <div>
            <h2>Tags</h2>
            <?php
            echo $data->tags
            ?>
        </div>
        <div>
            Thread owner
            <?php
            echo $records->uname
            ?>
        </div>
    <?php endforeach; ?>
</div>

EDIT: RÉPONSE À LA QUESTION

Grâce à Girish Jangid fixe le problème c'est le code de travail:

Contrôleur

function view_thread()
    {
        $quest = $this->uri->segment(3);
        echo $quest;//for checking if uri segment is passed
        //$data = array();
        if($query = $this->data_model->get_thread($quest))
        {
            $data['records'] = $query;      
        }

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

Modèle

public function get_thread($quest)
   {
    if($q = $this->db->get_where('questions' , array('qid' => $quest)));
    {
      return $q;
    }

   }

Vue

<div title="question_view">
    <h1>Question View<h1>

        <?php foreach($records->result() as $data) : ?>
        <div>
            <h2>Title</h2>
            <?php 
            echo $data->title;
            ?>
        </div>
        <div>
            <h2>Question</h2>
            <?php
            echo $data->contents
            ?>
        </div>
        <div>
            <h2>Tags</h2>
            <?php
            echo $data->tags
            ?>
        </div>
        <div>
            Thread owner
            <?php
            echo $data->uname
            ?>
        </div>
    <?php endforeach; ?>

</div>
</div>
  • Qu'est-ce que ce retour? $this->data_model->get_thread($quête)
  • maintenant que le code fonctionne, il est de retour d'un enregistrement de la base de données où "qid' correspond à $quête. Et $quest contient l'uri segment(3)
InformationsquelleAutor Tom | 2014-01-10