Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP错误:尝试获取非对象的属性_Php_Codeigniter - Fatal编程技术网

PHP错误:尝试获取非对象的属性

PHP错误:尝试获取非对象的属性,php,codeigniter,Php,Codeigniter,我在CodeIgniter框架中工作,我试图应用我在stack上找到的所有其他解决方案,但我无法使其工作,所以这里是我的问题。。。 我试图从MySQL数据库表中检索一条基于uri段的名为“questions”的记录。然后我尝试在视图中显示此记录。据我所知,uri段被传递到它需要的任何地方,记录从数据库中检索。 在我看来,当我试图从控制器访问数据时,问题出现了。 “视图\线程\视图”中循环中的每个回显都会出现错误 遇到一个PHP错误 严重性:通知 消息:正在尝试获取非对象的属性 文件名:views

我在CodeIgniter框架中工作,我试图应用我在stack上找到的所有其他解决方案,但我无法使其工作,所以这里是我的问题。。。 我试图从MySQL数据库表中检索一条基于uri段的名为“questions”的记录。然后我尝试在视图中显示此记录。据我所知,uri段被传递到它需要的任何地方,记录从数据库中检索。 在我看来,当我试图从控制器访问数据时,问题出现了。 “视图\线程\视图”中循环中的每个回显都会出现错误

遇到一个PHP错误

严重性:通知

消息:正在尝试获取非对象的属性

文件名:views/view\u thread\u 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);
模型数据

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

<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>
模型

看法


问题视图
标题
问题:
标签
线程所有者

$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;
}

您应该使用db函数获取结果,请使用CodeIgniter db查询结果函数,如下所示

 if($records->num_rows() > 0){
      foreach($records->result() as $data){
        if(isset($data->title)) echo $data->title;
      }
    }
有关更多详细信息,请阅读CodeIgniter查询结果函数

试试这个代码

<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>

问题视图
标题
问题:
标签
线程所有者

您不必使用Active Record函数,您可以执行原始查询,这在大多数情况下比使用Active Record略快。您是对的,但他没有使用结果函数来获取记录。这实际上似乎很有效,谢谢。但是,我的数据库查询存在问题。。。它必须不返回任何结果,因为视图中不显示任何内容。有什么想法吗?@Thomas请在$this->db->get_模式中尝试此代码,其中('questions',array('qid'=>$quest))很想投票,但没有足够的代表:(关于我上面提到的db问题,有什么想法吗?Thx快速回答,进行了代码调整,我遇到了一个新错误PHP错误严重性:注意消息:未定义索引:标题文件名:views/view\u thread\u view.phpTry do
var\u dump($data);
在foreach循环中,将结果发布到问题中。答案是错误的,您应该使用CodeIgniter查询结果函数来检索记录。[link]()好的,我看到还有另一个问题……查询返回类型为(mysql链接持久)的资源(30)类型为(mysql结果)数组(0){}数组(0){}数组(0){}数组(0){int(0)int(0)NULLSo如果它是一个对象而不是一个数组,那么使用->键。我的答案是$records是一个数组。它返回什么?$this->data\u model->get\u thread($quest)现在代码工作了,它从数据库返回一个记录,其中'qid'匹配$quest。并且$quest包含uri段(3)
<?php 
foreach($records as $data){
   $string = <<<STR
   <div>
      <h2>Title</h2>
      {$data['title']}
    </div>
    ...etc
STR;
    echo $string;
}
 if($records->num_rows() > 0){
      foreach($records->result() as $data){
        if(isset($data->title)) echo $data->title;
      }
    }
<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>