【问题标题】:Undefined variable in CodeIgniter 3CodeIgniter 3 中未定义的变量
【发布时间】:2015-12-25 12:14:47
【问题描述】:

请帮助我...我正在学习 CodeIgniter,但我遇到了这个错误。一定有一些愚蠢的错误。 我为此使用xampp软件。 它不断弹出未定义的变量行。

表名是“用户” 查看文件名是试试 模型文件名为 trydb 控制器文件名为 condb

错误

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: rows

Filename: views/try.php

Line Number: 12

Backtrace:

File: C:\xampp\htdocs\ciagain\application\views\try.php
Line: 12
Function: _error_handler

File: C:\xampp\htdocs\ciagain\application\controllers\Welcome.php
Line: 27
Function: view

File: C:\xampp\htdocs\ciagain\index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: Invalid argument supplied for foreach()

Filename: views/try.php

Line Number: 12

Backtrace:

File: C:\xampp\htdocs\ciagain\application\views\try.php
Line: 12
Function: _error_handler

File: C:\xampp\htdocs\ciagain\application\controllers\Welcome.php
Line: 27
Function: view

File: C:\xampp\htdocs\ciagain\index.php
Line: 292
Function: require_once

查看文件

<title>
Connecting data base
</title>
</head>
<body>
<?php
foreach($rows as $r){
echo $r->ID;
echo $r->Name;    
}

?>
    </body>
</html>

模态文件

<?php

    class Site_model extends Model {

        function getAll() {
            $q = $this->db->get('user');

            if($q->num_rows()>0) {
                foreach ($q->result() as $row) {
                    $data[] = $row;
                }
            return $data;
            }
        }


        }
        ?>

控制器文件

<?php

class Site extends CI_Controller {

    function index() {
        $this->load->model('trydb');
        $data['rows'] = $this->trydb->getAll();

        $this->load->view('try', $data);
    }

}
?>

默认控制器

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function index()
    {
        $this->load->view('welcome_message');
    }
    public function tryagain(){

     $this->load->view('try');   
    }
}

【问题讨论】:

  • 你的模型文件名是Site_model,为什么要加载trydb
  • @Dray 好的,谢谢,但它仍然无法正常工作。我是否需要对配置文件夹文件进行一些更改,因为我是第一次这样做?

标签: php database codeigniter


【解决方案1】:

为什么要在模型中放置 foreach 循环?你可以用这个:

function getAll() {
        $q = $this->db->get('user');
        $data = $q->result();
        return $data;
        }

按照 DS9 的建议,在查看文件中使用下面的内容。

if(isset($rows) && sizeof($rows)>0)
{
    foreach($rows as $r)
   {
   }
}

【讨论】:

  • 感谢您的回复,但我仍然收到相同的通知。我是否必须第一次编辑配置文件夹文件才能连接到数据库?
  • 检查更新的代码,如果有任何通知,请告诉我。
  • 我已经更新了代码,但是我的用户表没有打印任何输出。(没有任何通知)
  • 我已经重新检查了您的代码。您使用了以下代码:Site_model extends Model.. 您应该在最新版本的 codeigniter 中使用 site_model extends CI_Model。你可以发布网址吗?你真的加载视图文件try.php?
  • 我已经检查过 this-site_model extends CI_Model...但它仍然无法正常工作
【解决方案2】:

不是error,是通知

严重性:通知

要解决此问题,您可以定义变量或禁用通知。喜欢第一个。

喜欢,

if(sizeof($rows)>0)
{
    foreach($rows as $r){
    }
}

【讨论】:

  • 感谢您的建议,但 $data 的值正在从控制器传递到视图,我可以创建该变量吗?我认为我的控制器文件代码有问题。
【解决方案3】:

在第 12 行删除 } 和 ?> 之间的空格。这会有所帮助。也没有 Codeigniter 4 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多