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

本文介绍了在PHP的CodeIgniter(CI)框架中如何配置database.php以连接Oracle数据库,重点关注了字符集问题。当数据库服务器的字符集为ZHS16GBK,而Web服务器使用UTF-8时,可能会遇到字符集不匹配的错误。此外,文章还提到了在PHP7环境下,CI框架进行数据库操作时可能出现的表名识别问题,并提供了通过直接执行SQL语句来解决的方案。
摘要由CSDN通过智能技术生成

导语:这篇文章与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);

结束

你学会了吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值