如何访问库类中的数据库?

时间:2013-10-17 14:47:28

标签: php codeigniter

我正在重写我的应用程序以使用CodeIgniter。目前我正在努力与DB。我在config/databases.php中配置了数据库,但不知道如何在图书馆级别访问它们。

我正在通过autoload.php加载库:

$autoload['libraries'] = array('database', 'FGMembersite', 'phpmailer', 'formvalidator');

FGMembersite是我用于注册和登录的课程 我在login.php视图中访问此类,我有:

if(isset($_POST['submitted']))
{
   if($this->fgmembersite->Login())
   {
        $this->fgmembersite->RedirectToURL("main");
   }
}

fgmembersite->Login()导致:

public function DBLogin()
{

  $this->connection = pg_connect("host=localhost port=5432 dbname=".$this->db->database." user=".$this->ci->db->username." password=".$this->db->password."");

DBLogin()此处不明白db是什么。我收到了像
这样的错误 Undefined property: FGMembersite::$db

Trying to get property of non-object

我应该如何在FGMembersite中访问数据库配置?

1 个答案:

答案 0 :(得分:2)

您需要使用CodeIgniter super object从其他库中访问自动加载的库。像这样

$ci =& get_instance();

$this->connection = pg_connect("host=localhost port=5432 dbname=" . $ci->db->database . 
                               " user=" . $ci->db->username . 
                               " password=" . $ci->db->password );

您似乎尝试在代码中使用此方法,但您仅将其用于username字段,而不是databasepassword字段。

您可以通过将ci实例分配给类构造函数中的类属性来保存它,如下所示:

class Yourclass {

    private $ci;

    public function __construct() {

        $this->ci =& get_instance();  

    }

    public DBLogin() {

         $this->connection = pg_connect("host=localhost port=5432 dbname=" .
                             $this->ci->db->database . 
                               " user=" . $this->ci->db->username . 
                               " password=" . $this->ci->db->password );
    }

    public somethingElse() {

        print_r ($this->ci->db->username);

    }

}