深圳全飞鸿

标题: php连接Oracle的方法(ADODB) [打印本页]

作者: zhgc    时间: 2021-3-17 19:20
标题: php连接Oracle的方法(ADODB)
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);
复制代码




作者: zhgc    时间: 2021-3-18 15:37
关于中文乱码的问题:
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());
        }
       

}






作者: zhgc    时间: 2021-9-21 11:38
本帖最后由 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. }
复制代码










欢迎光临 深圳全飞鸿 (http://www.nagomes.com/disc/) Powered by Discuz! X3.2