Code Igniter中的postgre数据库驱动程序问题

时间:2019-01-03 20:13:51

标签: php database postgresql codeigniter

我正在尝试使用CodeIgniter 3.1.9框架从PHP中的postgreSQL数据库查询表。问题是我遇到了错误

A PHP Error was encountered
Severity: Notice

Message: Undefined property: CI_DB_postgre_driver::$db

为什么会出现此错误以及如何解决?

到目前为止我所做的。我确定我使用的端口正确,我知道6090不是默认端口,但这就是我的postgreSQL数据库正在使用的端口。我已经在database.php文件中提供了连接到postgreSQL所需的一切。 我从php.ini文件中取消了这两个注释:

extension = php_pgsql.dll

extension = php_pdo_pgsql.dll

$db['database_2'] = array(
'dsn'   => '',
'hostname' => 'example01',
'username' => 'user',
'password' => 'pwrandom',
'database' => 'dbrandom',
'dbdriver' => 'postgre',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE,
'port' => '8060');

这是已执行的语句。错误发生在第二条语句上...

$secondDB = $this->load->database('database_2', TRUE);
$secondDB->db->query("SELECT VERSION()")->row('version');

1 个答案:

答案 0 :(得分:1)

我不使用postgre,但是错误来自x & y。您尝试从查询中获取一行,但是没有正确地调用它

尝试这样:

->row('version')

在我的情况下输出:$secondDB = $this->load->database('database_2', TRUE); $obj= $this->db->query('SELECT VERSION()'); echo'<pre>';print_r($obj->row()); die();

您还可以仔细查看并打印出对象,以查看其结构:

[VERSION()] => 5.6.12-log

在我的情况下(mysqli),对象看起来像:

echo'<pre>';print_r($obj); die();

现在,您可以根据以下结构相应地更改CI_DB_mysqli_result Object ( [conn_id] => mysqli Object ( [affected_rows] => 1 [client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: 40933630edef551dfaca71298a83fad8d03d62d4 $ [client_version] => 50011 //some more [server_info] => 5.6.12-log //some more ) )

在我的示例中,我将使用:->row('version')

现在输出: 5.6.12-log

更多文档:Generating Query Results: result rows