codelgniter CI框架 连接oracle数据库 database.php配置

导语:这篇文章与wordpress无关,内容为php的codelgniter(CI)框架连接ORACLE数据库时的database.php配置。叶子有一个项目需要用CI框架和ORACLE数据库,相当的不适应,开始的时候数据库老是连接不上,后来查找发现是字符集的问题。

找出ORACLE使用的字符集

使用下面的sql语句

select * from nls_database_parameters

结果有很多,其中一个是:NLS_CHARACTERSET ZHS16GBK。这个ZHS16GBK就是oracle的字符集。

配置database.php

database.php在application/config目录下。

$tnsname = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 134.166.1.1)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = leaf)))';

$db['default'] = array(
	'dsn'	=> '',
	'hostname' => $tnsname,
	'username' => 'leaf',
	'password' => 'leaf',
	'database' => '',
	'dbdriver' => 'oci8',
	'dbprefix' => '',
	'pconnect' => TRUE,
	'db_debug' => TRUE,
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'zhs16gbk',
	'dbcollat' => '',
	'swap_pre' => '',
  'autoinit' => TRUE,
  'stricton' => FALSE
);

配置好就可以了。

如果字符集不一样,数据库服务器是zhs16gbk,web服务器是utf-8,那么会提示字符集有错误的。

注意

CI框架在php7的环境下,使用$this->db->set()和$this->db->insert()等进行ORACLE数据库操作的时候,会提示数据表不存在,原因是表名在转换中加了双引号,导致oracle认不出来。

解决的方法就是直接写sql语句来执行。

例如:

$this->db->set('login', $userlogin);

$this->db->insert("users");

以上代码oracle会提示表不存在。以下代码会成功执行。

$sql = "insert into users (login) values ('leaf')";

$this->db->query($sql,false);

结束

你学会了吗?

发表评论

邮箱地址不会被公开。 必填项已用*标注