【问题标题】:Codeigniter Message: Undefined property: stdClassCodeigniter 消息:未定义的属性:stdClass
【发布时间】:2012-03-20 18:31:49
【问题描述】:

我正在尝试使用模型中的以下查询来查询数据库:

function showSpecific(){

    $all = $this->session->all_userdata();
    $name = $all['u_name'];

    $id = $this->db
    ->select('u_id')
    ->from('users')
    ->where('u_name', $name)
    ->get()
    ->row(); 

    $id = $id->u_id; 

    $data = $this->db->query("SELECT messages.m_id, messages.post_id, messages.m_betreff, messages.an_user, messages.von_user, messages.m_time, users.u_id, users.u_name, posts.p_titel, users.u_id, messages.m_content
                FROM messages
                INNER JOIN users 
                ON messages.von_user=users.u_id
                INNER JOIN posts
                ON messages.post_id=posts.post_id
                WHERE messages.an_user='$id'
                ORDER BY messages.m_time DESC");




    return $data;
}

但是当我尝试在视图中输出结果时:

<?php foreach ($query->result() as $row)
                {
                    echo '<tr><td>';
                    echo anchor('users/showUser/'.$row->u_id, $row->u_name);
                    echo '</td><td>';
                    echo $row->m_betreff;
                    echo '</td><td>';
                    echo $row->m_content;
                    echo '</td><td>';
                    echo anchor('posts/showSpecific/'.$row->post_id, $row->p_titel);
                    echo '</td><td>';
                    echo $row->m_time;
                    echo '</td></tr>';
                }
                ?>

只有 m_content 得到这个错误:为什么它是唯一的?我该如何解决这个问题?

A PHP Error was encountered
Severity: Notice

Message: Undefined property: stdClass::$m_content

Filename: views/specific_message.php

Line Number: 48

这是我的控制器:

function showSpecific(){

    $this->load->model('messages_model');
    $data['query'] = $this->messages_model->getMessages();

    $data['main_content'] = 'specific_message';
    $this->load->view('includes/login_template', $data);
}

非常感谢!

【问题讨论】:

  • 试试 var_dump($query-&gt;result()) 看看 m_content 有什么问题。另一个建议是不要在视图文件中使用 mysql 查询,仅将它们用于模板
  • 您是否打印了其他值?
  • 是的,所有其他值都会被打印出来。查询在模型内部,对不起,我也忘了复制那行代码。感谢您的建议,我会尝试再次回答。谢谢!
  • 即使 $data['query'] ?

标签: php sql codeigniter


【解决方案1】:

我认为

$data['query'] = $this->db->query("...");

应该是

$query=$this->db->query("...");

所以你可以

foreach ($query->result() as $row) {...}

参考:codeigniter

问题更新后:您的视图中有 $query 变量,因为 $data['query'] ($data 将被提取),$query 现在是您的对象(在您的视图中)这样你就可以循环 $query。

调用了错误的模型名称getMessages(),应该是showSpecific()

【讨论】:

  • 我更改了它和所有相应的位置,但现在我收到以下错误:致命错误:无法在第 19 行的 /htdocs/findjou/application/controllers/messages.php 中使用 CI_DB_mysql_result 类型的对象作为数组
  • 您是否在任何地方使用数组表示法?即 $row['u_id'] ?因为它返回一个对象,所以像 $row->u_id; 一样使用它
  • 是的,我愿意(做过)。我用我原来的控制器更新了我原来的帖子,现在在我的编辑器中它已经按照你提到的那样进行了更改。 (在我改变它之后,新的错误来了。)
  • 你正在调用 getMessages();功能,但在您的示例中,您有 showSpecific(),您的模型中是否有 getMessages() 功能,您的控制器名称也是 showSpecific()?
  • 天哪,就是这样!我调用了错误的模型函数。顺便说一句,将控制器和模型功能命名为相同的做法是不好的做法吗?非常感谢!我试图将您的答案投票为有用,但它告诉我我首先需要 15 声望。我怎么能投票给你表示感谢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2019-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多