CodeIgniter:致命错误:在非对象上调用成员函数select()

时间:2013-04-09 01:57:18

标签: database codeigniter object autoload

我正在尝试从我的库中访问函数时出现上述错误,如图所示...

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

class My_crud {

public function select_from($select, $from) {
    // dafaults
    $output = "";
    // querying
    $this->db->select($select);
    $this->db->from($from);
    $query = $this->db->get();
    // if no rows returned
    if ($uqery->num_rows == 0) {
        return $output = "No Results Found";
    }
    // if row(s) retunred
    return $output = $query->result_array();
}
}

database库设置为自动加载。

3 个答案:

答案 0 :(得分:3)

如果您要在库中创建它,您应该获得CI的实例,您可以将其添加到__construct

class My_crud
{
 var $ci;
 public function __construct()
 {
  $this->ci =& get_instance();
 }
}

然后在班级中将您的方法更改为this->db$this->ci->db,问题是为什么当您在模型中创建时,为什么要对库进行讨论?

答案 1 :(得分:1)

如果您想使用CodeIgniter超级对象资源,则需要使用get_instance()函数,如Utilizing CodeIgniter Resources within your Library中所述。

$CI =& get_instance();
$CI->db->select($select) ...

答案 2 :(得分:0)

你的课需要扩展一些东西。现在设置$this->db的方式是在$db类中查找不存在的My_crud参数。

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

class My_crud extends CI_Model {

    public function select_from($select, $from) {
        // defaults
        $output = "No Results Found";

        // querying
        $query = $this->db
            ->select($select)
            ->get($from);

        if ($query->num_rows() > 0)
            $output = $query->result_array();

        return $output;
    }
}