2012-03-20 71 views
1

我试图与模型下面的查询来查询数据库:笨消息:未定义的属性:stdClass的

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

非常感谢!

+1

尝试'的var_dump($查询 - >结果())',看看是m_content问题。另一个建议是不要在视图文件中使用mysql查询,仅将它们用于模板 – safarov 2012-03-20 18:37:31

+0

你会得到其他值吗? – 2012-03-20 19:14:33

+0

是打印所有其他值。该查询在模型中,对不起,我忘了复制该代码行。感谢您的建议,我会尝试再回答。谢谢! – Linus 2012-03-20 19:18:05

回答

6

我觉得

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

应该

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

这样你就可以

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

参考:codeigniter

问题更新后:由于$ data ['query']($ data将被提取),因此您的视图中有$ query变量,$ query是您的对象(您的视图内),因此您可以循环$ query 。

错型号名称的getMessages()被调用,它应该是showSpecific()

+0

我改变了它和所有相应的地方,但现在我得到以下错误: 致命错误:不能使用CI_DB_mysql_result类型的对象作为第19行中的/htdocs/findjou/application/controllers/messages.php中的数组 – Linus 2012-03-20 19:25:16

+0

您是否使用数组符号在哪里?即$ row ['u_id']?因为它返回一个对象,所以像使用它$ row-> u_id; – 2012-03-20 19:30:21

+0

http://codeigniter.com/user_guide/database/results.html – 2012-03-20 19:32:13

相关问题