如何使用 codeigniter 连接到用户 DSN?

Posted

技术标签:

【中文标题】如何使用 codeigniter 连接到用户 DSN?【英文标题】:How to connect to a User DSN using codeigniter? 【发布时间】:2011-08-04 20:11:10 【问题描述】:

我能够连接到我的 linux 机器上的用户 DSN(使用 ODBC)。

如何使用代码点火器进行连接?

在我的 database.php 中,我有默认数据库:

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'user';
$db['default']['password'] = 'pass';
$db['default']['database'] = 'db_main';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

但是我还需要同时使用 ODBC 连接到另一个数据库:

所以我的控制器中有:

public function index()
     

         $dsn = 'NZSQL://someuser:password@host/somedatabase';
         $this->load->database($dsn);
         $this->db->query("SELECT * FROM Cust Limit 10");
         $result = $this->db->result();
    

我得到错误:

发生数据库错误

错误号:1146

表 'db_main.Cust' 不存在

SELECT * FROM Cust Limit 10

文件名:/var/www/controllers/netezzatest.php

行号:28

【问题讨论】:

【参考方案1】:

对于您要连接的每个数据库,Code Igniter 将要求您构建一个新的数据库对象。您应该在配置文件中完全构建每个 DB,然后在调用 $this->load->database() 时按名称(数组键)引用它们。

详情请参阅Connecting to Multiple Databases。但是,基本上,您需要使用它来连接(为每个数据库创建一个对象):

$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE);

然后对每个运行查询:

$DB1->query();
$DB1->result();

还有:

$DB2->query();
$DB2->result();

【讨论】:

【参考方案2】:

当连接到第二个数据库时,你需要让它返回你的对象,这样你才能使用它。将 true 作为第二个参数传递给 load->database 会返回一个 db 对象。

$dsn = 'NZSQL://someuser:password@host/somedatabase';
$dsnDB = $this->load->database($dsn, TRUE);
$query = $dsnDB->query("SELECT * FROM Cust Limit 10");
$result = $query>result();

在这种情况下,$this->db 是您的 mysql DB,$dsnDB 是另一个。

【讨论】:

如果我的密码包含'@'怎么办? @alfian5229 ***.com/questions/7860365/…

以上是关于如何使用 codeigniter 连接到用户 DSN?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CodeIgniter 中连接到 SQL Server 数据库?

如何使用 codeigniter 连接到不同服务器中的数据库

在 Synology DS218play 上,WordPress 无法连接到用户数据库,但 phpmyadmin 可以

[尝试使用mysqli连接到数据库时出现Codeigniter错误

无法使用 codeigniter 连接到 SQL SERVER 数据库

Codeigniter 无法连接到外部 SQL Server