CodeIgniter数据库检索问题

时间:2013-03-20 05:13:15

标签: php mysql codeigniter

这是我第一次尝试在CodeIgniter中编码。问题是它无法从数据库中检索数据。它抛出的错误是:

A PHP Error was encountered

Severity: Notice

Message: Undefined property: Site::$db

Filename: core/Model.php

Line Number: 51

我可以理解在core/model.php的那一行中要改变什么。

这是另一个错误:

 Fatal error: Call to a member function query() on a non-object in C:\wamp\www\CI_one\application\models\site_model.php on line 9

控制器

<?php
    class Site extends CI_Controller {
        function datta(){
            $this->load->model('site_model');
            $get = $this->site_model->getValues();
            $data['get'] = $get;
            $this->load->view('data3',$data);
        }
    }

模型

<?php
    class site_model extends CI_Model{

        function index(){
            echo "default index";
        }

        function getValues(){
            $query = $this->db->query("select * from nav_menu");

            if ($query->num_rows() > 0)
            {
               foreach ($query->result() as $row)
               {
                  echo $row->c1;
                  echo $row->m2;
                  echo $row->d3;
               }
            }
            return array(
                "name" => "nameless",
                "form" => "formless",
                "age"  => "ageless");
        }
    }

我在app/config/database.php

中设置了数据库参数

我如何使这项工作?


我自己解决了。我擦掉了并按如下方式重新编码以获得结果......

控制器

<?php
    class Site extends CI_Controller {
        function datta(){

            $this->load->database();
            $this->load->model('site_model');
            $get = $this->site_model->getValues();
            $data['get'] = $get;
            $this->load->view('data3',$data);
        }
    }

模型为

<?php
    class site_model extends CI_Model{

        function index(){
            echo "default index";
        }

        function getValues(){
            $query = $this->db->query("select * from nav_menu");

            if ($query->num_rows() > 0)
            {
               foreach ($query->result() as $row)
               {
                  echo $row->c1;
                  echo $row->m2;
                  echo $row->d3;
               }
            }
            return array(
                "name" => "nameless",
                "form" => "formless",
                "age"  => "ageless");
        }
    }

3 个答案:

答案 0 :(得分:2)

在Codeigniter中,您必须手动加载DB库,如下所示:

$this->load->database(); 

或者你必须按照sandip的说法自动加载库。

在您的应用程序中,您可能需要自动加载多个库和帮助程序,因此不是手动加载它们,而是自动加载是最佳做法。请在这里阅读有关自动加载的信息。

http://ellislab.com/codeigniter/user-guide/general/autoloader.html

另请阅读其余文档,您将从那里了解有关CI的所有信息。它简单,简洁,并有例子。

希望这会有所帮助。

答案 1 :(得分:0)

请在CodeIgniter控制器中写一个构造函数

public function __construct() {
    parent::__construct();
}

除此之外:

您必须先加载数据库库。在

autoload.php:

  $autoload[‘libraries’] = array(‘database’);

或者在控制器构造函数中:

  $this->load->database();

我希望它会有所帮助!

答案 2 :(得分:0)

试试这个:

控制器:

<?php
class Site extends CI_Controller {
    function datta(){
        $this->load->database();
        $this->load->model('site_model');
        $get=$this->site_model->getValues();
        $data['get']=$get;
        $this->load->view('data3',$data);
    }
}