深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 807|回复: 2
打印 上一主题 下一主题

php连接Oracle的方法(ADODB)

[复制链接]

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
跳转到指定楼层
楼主
发表于 2021-3-17 19:20:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
php.ini中打开OCI

extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll

不知道为什么,不打开php_oci8_12c.dll会不行


下载客户端:

E:\instantclientbasicwindowsx64_v12.2.0.1.0_itmop.com.zip
解压后,path里加上E:\instantclient_12_2;


就可以连接了
  1. <?php

  2. error_reporting(0);

  3. require_once('adodb/adodb.inc.php');

  4. $conn = NewADOConnection('oci8');
  5. $conn->debug = true;
  6. $ret=$conn->connect('192.168.80.1', 'Loginuser', 'Loginuser', 'ent');
  7. //$conn->SetFetchMode(ADODB_FETCH_ASSOC);
  8. //$conn->Execute("set names {$config->site_charset}");

  9. $sql="select 78 from dual";

  10. $ret=$conn->getOne($sql);
  11. var_dump($ret);
复制代码



回复

使用道具 举报

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
沙发
 楼主| 发表于 2021-3-18 15:37:00 | 只看该作者
关于中文乱码的问题:
SELECT * FROM Nls_Database_Parameters
NLS_NCHAR_CHARACTERSET
NLS_CHARACTERSET  AL32UTF8
NLS_DATE_FORMAT DD-MON-RR
NLS_NCHAR_CHARACTERSET  UTF8

select Userenv('language')  from dual
AMERICAN_AMERICA.AL32UTF8
AMERICAN_AMERICA.AL32UTF8

最后方案:

在cmd里加set NLS_LANG=American_America.ZHS16GBK
或在环境里配NLS_LANG


<?php

error_reporting(0);

//$str1="王军";
//$str=iconv('utf-8','gb2312', $str1);
//echo $str;



require_once('adodb/adodb.inc.php');

$conn = NewADOConnection('oci8');
//$conn->debug = true;
$conn->connect('192.168.80.18', ' ', ' ', 'enti  ');
$conn->charSet ='utf-8';
$conn->SetFetchMode(ADODB_FETCH_ASSOC);
//$db->Execute("set names {$config->site_charset}");
//$sql="select Userenv('language')  from dual";
//$table=$conn->getAll($sql);
//var_dump($table);

$sql="select
ROLEID, ROLE_NAME, ROLE_DESC, REMARK, DATA_VALID, MODIFY_USERID, MODIFY_DATETIME
from entiredba.bs_role";

$table=$conn->getAll($sql);
//$str=var_export($table[1],true);
//echo $str;


$mes = NewADOConnection('mysqli');
$mes->Connect("192.168.80.11", " ", " @!", "wes");
$mes->Execute("set names gbk");

foreach($table as $line){
        $sql="delete from entiredba.bs_role where ROLEID='".$line["ROLEID"]."' limit 1";
        $rst=$mes->execute($sql);
        if($rst){
                                //
        }else{
                echo($mes->ErrorMsg());
        }
       
        $emp="'".$line["MODIFY_USERID"]."'";
        if(strlen($line["MODIFY_USERID"])<2){
                $emp="null";
        }
        $ROLE_DESC=$line["ROLE_DESC"];
        $ROLE_DESC=str_replace("'"," ",$ROLE_DESC);
        $REMARK=$line["REMARK"];
        $REMARK=str_replace("'"," ",$REMARK);
        $sql="INSERT INTO entiredba.bs_role(ROLEID, ROLE_NAME, ROLE_DESC, REMARK, DATA_VALID, MODIFY_USERID, MODIFY_DATETIME) VALUES ('".$line["ROLEID"]."', '".$line["ROLE_NAME"]."', '".$ROLE_DESC."','".$REMARK."','".$line["DATA_VALID"]."', {$emp}, now())";
        $rst=$mes->execute($sql);
        if($rst){
                        echo ".";
        }else{
                echo($mes->ErrorMsg());
        }
       

}





回复 支持 反对

使用道具 举报

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
板凳
 楼主| 发表于 2021-9-21 11:38:07 | 只看该作者
本帖最后由 zhgc 于 2021-9-21 11:51 编辑


NLS_LANG
AMERICAN_AMERICA.UTF8






  1. <?php

  2. error_reporting(0);

  3. require_once('adodb/adodb.inc.php');

  4. $conn = NewADOConnection('oci8');
  5. //$conn->debug = true;
  6. $conn->connect('192.168.0.18', 'user', '0901', 'entire');
  7. $conn->SetFetchMode(ADODB_FETCH_ASSOC);
  8. //$db->Execute("set names {$config->site_charset}");

  9. $sql="select
  10. ROLEID, USERID, MODIFY_USERID, MODIFY_DATETIME
  11. from entiredba.bs_role_user";

  12. $table=$conn->getAll($sql);

  13. //var_dump($table);

  14. $mes = NewADOConnection('mysqli');
  15. $mes->Connect("192.168.80.11", "sklwes", "sklwes@!", "wes");
  16. $mes->Execute("set names utf8");
  17. foreach($table as $line){
  18.         $sql="delete from entiredba.bs_role_user where ROLEID='".$line["ROLEID"]."' and USERID='".$line["USERID"]."' limit 1";
  19.         $rst=$mes->execute($sql);
  20.         if($rst){
  21.                                 //
  22.         }else{
  23.                 echo($mes->ErrorMsg());
  24.         }
  25.         
  26.         $emp="'".$line["MODIFY_USERID"]."'";
  27.         if(strlen($line["MODIFY_USERID"])<2){
  28.                 $emp="null";
  29.         }
  30.         $sql="INSERT INTO entiredba.bs_role_user(ROLEID, USERID, MODIFY_USERID, MODIFY_DATETIME) VALUES ('".$line["ROLEID"]."', '".$line["USERID"]."', {$emp}, now())";
  31.         $rst=$mes->execute($sql);
  32.         if($rst){
  33.                         echo ".";
  34.         }else{
  35.                 echo($mes->ErrorMsg());
  36.         }
  37.         

  38. }
复制代码





回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-5 00:56 , Processed in 0.028894 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表