Codeigniter消息:未定义的属性类别::$My First Blog


Codeigniter Message: Undefined propertystdClass::$My First Blog

我刚开始学习CodeIgnighter,遇到了很多问题。

我制作了一个控制器和一个视图,如下所示。

这是我的控制器

<?php
 class Blog extends CI_Controller{
function __construct() {
    parent::__construct();
}
function index(){
    $data['title'] = "My First Blog";
    $data['heading'] = "My Blog Heading";
    $data['query'] = $this->db->get('entries');
    $this->load->view('blog_view' ,$data);
}
}
?>

这是我的观点。

<html>
<head>
    <title><?=$title?></title>
</head>
<body>
    <h1><?=$heading?></h1>
    <?php foreach ($query->result() as $row): ?>
        <h3><?=$row->$title?></h3>
        <p><?=$row->$body?></p>
     <hr>
    <?php endforeach;?> 
</body>
</html>

当我执行这个时,我会得到这个错误。

PHP Error was encountered
Severity: Notice
Message: Undefined property: stdClass::$My First Blog
Filename: views/blog_view.php
Line Number: 9

现在我不知道这段代码出了什么问题。

从foreach变量中删除"$":

<html>
<head>
   <title><?=$title?></title>
</head> 
<body>  
<h1><?=$heading?></h1> 
   <?php foreach ($query->result() as $row): ?>
        <h3><?=$row->title?></h3>
        <p><?=$row->body?></p>
        <hr>
  <?php endforeach;?>
 </body>  
</html>  

乍一看,在视图的foreach中,您应该这样做:

<h3><?=$row->title?></h3>
<p><?=$row->body?></p>

正如其他人建议的那样,您应该将$row->$title更改为$row->title很简单的

$title是一个包含My的变量,所以当你说$row->$title时,你实际上是在说$row->My,这将导致错误