我在CodeIgniter框架中工作,我试图应用我在堆栈上找到的所有其他解决方案,但我无法使其工作,所以这是我的问题... 我试图从MySQL数据库表中检索一个基于uri段的“问题”记录。然后我试图在视图中显示此记录。据我所知,uri段在它需要的任何地方传递,并从数据库中检索记录。 在我看来,当我尝试从控制器访问数据时出现问题。 我在“view_thread_view”循环中为每个回显得到的错误是
遇到PHP错误
严重性:注意
消息:尝试获取非对象的属性
文件名:views / view_thread_view.php
非常感谢任何解决方案。
这是我的代码:
控制器线程
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);
模型data_model
public function get_thread($quest)
{
if($q = $this->db->get_where('questions' , 'qid' , $quest));
{
return $q;
}
}
查看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>
编辑:问题解答
感谢Girish Jangid解决了问题,这就是工作代码:
控制器
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);
}
模型
public function get_thread($quest)
{
if($q = $this->db->get_where('questions' , array('qid' => $quest)));
{
return $q;
}
}
查看
<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>
答案 0 :(得分:3)
你应该使用db函数来获取结果,请使用CodeIgniter db Query Results函数,像这样
if($records->num_rows() > 0){
foreach($records->result() as $data){
if(isset($data->title)) echo $data->title;
}
}
有关详细信息,请阅读CodeIgniter查询结果功能 Query Results
试试此代码
<div title="question_view">
<h1>Question View<h1>
<?php if($records->num_rows() > 0) { ?>
<?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 $records->uname
?>
</div>
<?php endforeach; ?>
<?php } ?>
</div>
答案 1 :(得分:-1)
$records
是一个数组,而不是一个对象,因此你不能$records->uname
。你可能也认为$data
。
编辑:第二次看,它显示$data
也是一个数组!可以通过['key']
而不是->key
此外,您的代码过于复杂。
<?php
foreach($records as $data){
$string = <<<STR
<div>
<h2>Title</h2>
{$data['title']}
</div>
...etc
STR;
echo $string;
}