arjian2k 发表于 2009-10-20 13:48:23

如何使用CI访问Oracle数据库

论坛中有朋友遇到同样的问题,做出了解答。再开一贴,希望大家能有更好的办法。
1、win2003下,apache + php 访问oracle
参考文档http://database.ctocio.com.cn/tips/197/6463197.shtml相关的库文件下载地址:http://eduunix.ccut.edu.cn/index2/database/Oracle%20Instant%20Client/http://eduunix.ccut.edu.cn/index2/database/Oracle%20Instant%20Client/instantclient-basic-win32-10.1.0.5-20060419.zip2、实现CI访问OracleActive Record不能支持 Oracle,参考 《PHP敏捷开发框架》 “dbdriver: 你正在使用的数据库的类型 - CI可受的有选项有MySQL、MySQLi、 Postgre SQL、ODBC和MS SQL ”
因此采用链接串方式访问:controllers中:function index()
{
$data['title'] = "My Blog Title";
$data['heading'] = "My Blog Heading";
$conn = OCILogon("username", "password", '//0.0.0.0:1521/xxxx');//最后的串表示oracle服务器的地址和端口号,斜线后面表示服务(库)名
$query = "select user_id,user_date from table_name where user_id = 8 and user_name = 'Leonwang'";
$stid = OCIParse($conn, $query);
OCIExecute($stid);
$i = 0;
while ($row = oci_fetch_array ($stid, OCI_BOTH)) {//此处可以参考php帮助 oci_fetch_array
   $results[$i]['USER_ID'] = $row['USER_ID'];
   $results[$i] = $row;
   $i++;
}
echo $i. '<br>';//取出记录数
$data['query'] = $results;
$this->load->view('ebs_helper_view',$data);//调用view

}
----------------------------
view :
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1><?php echo $heading; ?></h1>
<?php
foreach($query as $row):
?>
<h3><?=$row['USER_ID']?><h3>
<p><?=$row['USER_DATE']?><p>
<hr>
<? endforeach; ?>
</body>
</html>

同时,目前的配置可以正常访问oracle,不过还不支持中文。也希望有高人指点。谢谢!

arjian2k 发表于 2009-10-20 14:06:15

关于中文正确显示,在网上找到了帮助,在 OCILogon 函数中添加参数: 'zhs16gbk',可以正常显示中文了。
$conn = OCILogon("username", "password", '//0.0.0.0:1521/xxxx','zhs16gbk');

韶聪 发表于 2011-4-15 16:02:19

我试验不行啊?

alkz 发表于 2012-12-8 17:47:51

呵呵,要更改nls设置的

alkzerp 发表于 2014-8-15 16:59:17

这点太重要了,要注意的一个事情是:使用PHP开发Oracle应用时,不要使用Active Record模式。还有,不支持中文,可以在application\config\config.php中,连接数据库的地方,字符集不要使用utf-8,而应该使用oracle 的nls语言设置,就是使用:zh16kshs 这个设置,就应该可以支持中文了
页: [1]
查看完整版本: 如何使用CI访问Oracle数据库