在同一个应用程序中将codeigniter连接到mysql和oracle
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在同一个应用程序中将codeigniter连接到mysql和oracle,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2856字,纯文字阅读大概需要5分钟。
内容图文
![在同一个应用程序中将codeigniter连接到mysql和oracle](/upload/InfoBanner/zyjiaocheng/894/4cb76c4626904ad5981c1a422e9d9223.jpg)
我正在使用Mysql和Oracle作为我的CI应用程序.我试图连接它,但我发现我无法查询Oracle数据库.它总是给出表不存在的错误.
我已经将database.php设置为这样的东西
$active_group = 'oracle';
$active_record = true;
$db['oracle']['hostname'] = '10.10.10.1:1521/ocidb';
$db['oracle']['username'] = 'ociuser';
$db['oracle']['password'] = 'ocipass';
$db['oracle']['database'] = 'ocidb';
$db['oracle']['dbdriver'] = 'oci8';
$db['oracle']['dbprefix'] = '';
$db['oracle']['pconnect'] = TRUE;
$db['oracle']['db_debug'] = FALSE;
$db['oracle']['cache_on'] = FALSE;
$db['oracle']['cachedir'] = '';
$db['oracle']['char_set'] = 'utf8';
$db['oracle']['dbcollat'] = 'utf8_general_ci';
$db['oracle']['swap_pre'] = '';
$db['oracle']['autoinit'] = TRUE;
$db['oracle']['stricton'] = FALSE;
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'mysqldb';
$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;
在一个控制器中,我想在oracle中查询一个表,所以我在那里加载它.
function citizen(){
$this->load->database('oracle',true);
$data['someone'] = $this->people_model->getPeople();
$this->load->view('myview',$data);
}
这里是people_model
function getPeople(){
return $this->db->get('people')->result();
}
当我运行它时,它会出错
Error Number: 1146
Table 'mysqldb.people' doesn't exist
SELECT * FROM (`people`) WHERE `id` = '21111'
它似乎仍然使查询进入mysql,而表人们在oracle中.我也尝试在模型中而不是在控制器中加载oracle数据库但结果相同.
在这种情况下,如何查询oracle.任何答案将不胜感激.谢谢.
解决方法:
我使用Codeigniter使用oracle和mysql.
您使用了$this-> load->数据库(‘oracle’,true);当您使用第二个参数true时,应将其分配给变量.
像这样
$oracle_db=$this->load->database('oracle',true);//connected with oracle
$mysql_db=$this->load->database('default',true);//connected with mysql
现在,您可以将这两个变量用于查询.就像
$oracle_db->get('people')->result();
要么
$mysql_db->get('people')->result();
所以最后你的模型应该是这样的(不要在你的控制器上加载数据库)
function __construct()//model construct function
{
parent::__construct();
$this->oracle_db=$this->load->database('oracle',true);
$this->mysql_db=$this->load->database('default',true);
}
function getPeople(){
return $this->oracle_db->get('people')->result();
}
希望你能理解.确保它与您的oracle db连接.
我的oracle数据库.php是这样的
$tns = "
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = YOUR_IP)(PORT = 1521))
)
(CONNECT_DATA =
(SID = YOUR_SID)
)
)
";
$db['oracle']['hostname'] = $tns;
内容总结
以上是互联网集市为您收集整理的在同一个应用程序中将codeigniter连接到mysql和oracle全部内容,希望文章能够帮你解决在同一个应用程序中将codeigniter连接到mysql和oracle所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。