我正在尝试使用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');
答案 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