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)
Vous devez vous connecter pour publier un commentaire.
Vous devriez base de données utilisateur de la fonction pour récupérer les résultats, veuillez utiliser CodeIgniter db Résultats de la Requête fonctions, à l'instar de ce
Pour plus de détails, veuillez lire CodeIgniter Résultat de la Requête de la fonction
Les Résultats De La Requête
Essayer ce code
$records
est un tableau, pas un objet, donc vous ne pouvez pas faire$records->uname
. Vous signifiait probablement$data
là aussi.Edit: Sur le deuxième coup d'oeil, il semble
$data
est un tableau ainsi! Les tableaux sont accessibles via['key']
pas->key
Aussi, votre code est plus compliqué.
http://www.php.net/manual/en/language.types.string.php
var_dump($data);
dans votre boucle foreach et afficher les résultats dans votre question.of type (mysql result)
signifie qu'il est l'extraction des résultats @GirishJangid si cette réponse n'est PAS faux.