thinkphp使用pdo方式连接oracle
时间:2009-06-16
来源:互联网
- config.php
- ------------------------------------------------------------------------------------------
- <?php
- if (!defined('THINK_PATH')) exit();
- return array(
- 'DB_TYPE'=> 'pdo',
- // 注意 DSN 的配置针对不同的数据库有所区别 请参考 PHP 手册 PDO 类库部分
- 'DB_DSN'=>"oci:dbname=". '(DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = a.b.c.d)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = orafa)
- )
- )',
- 'DB_USER'=>'sgcc',
- 'DB_PWD'=>'********************',
- 'DB_CHARSET'=>'gb2312',
- 'DEBUG_MODE'=>true
-
- );
- ?>
-
- t_rtuModel.class.php
- --------------------------------------------------------------------------
- <?php
- class t_rtuModel extends Model
- {
- protected $trueTableName = 'ps4i.t_rtu';//此处ps4i是oralce的用户。用于不同用户操作表
- }
-
-
- IndexAction.class.php
- --------------------------------------------------------------------------
- <?php
-
- class IndexAction extends Action{
- public function index(){
- header("Content-Type:text/html; charset=utf-8");
-
- $rtu = D(t_rtu);
- $rtusingle = $rtu->findall();
- dump($rtusingle);
- }
-
- }
- ?>
请大家指正。
作者: longdas 发布时间: 2009-06-16
作者: semieye 发布时间: 2009-06-17
longdas 09:51:38 11月17日
windows下搞定php用PDO连接oralce的问题
这几天要用php连异机的oralce,颇费了一番周折,现把经验共享如下:
1、首先下载instantclient-basic-win32-11.1.0.6.0.zip
http://www.oracle.com/technology ... htdocs/winsoft.html
此处需要注册一个oralce帐号才可以下载。
2、将所有文件解压放到c:\windows下面。
3、更改c:\windows\php.ini下几个选项:
extension=php_pdo.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
extension=php_pdo_oci8.dll
(在安装php的时候在ext选项选中这几项)
4、更改注册表:
注册表里 \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 查找键 NLS_LANG,这个键由Oracle标准客户端安装创建, 值是 NA 。这个导致了 ORA-12705错误。解决方法就是修改NA为SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
Linux下 如果环境变量 NLS_LANG 值是NA 会引起 ORA-12705 错误,解决方法是修改set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
5、测试代码:
try{
$conn = new PDO("oci:dbname=//a.b.c.d:1521/orafa",'user','passwd');
//PDO("oci:dbname=//oracle远程IP:端口号/数据库名",用户名,密码);
//若是本机上的数据库,可直接用PDO("oci:dbname=数据库",$db_username,$db_password);
echo "连接成功";
}catch(PDOException $e){
echo ("Error:".$e->getMessage()."<br>");
die();
}
经验:
1、报: 30ORA-12705: Cannot access NLS data files or invalid environment specified
看上面第4步解决方法。
2、报:error: SQLSTATE[]: pdo_oci_handle_factory oci_driver.c:581
一般是版本不对,下载上面第一项的文件就可以了。
作者: longdas 发布时间: 2009-06-18
作者: jfaspx 发布时间: 2009-09-24
这里应该是$rtu = D("t_rtu");
作者: qiujian 发布时间: 2009-10-18
作者: thinkphp 发布时间: 2009-10-19
作者: tap131410 发布时间: 2011-11-17
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28