WINDOWS平台下PHP5.3通过PDO连接ORACLE

因为开发需要吧,需要在WINDOWS平台下使用APACHE+PHP+ORACLE环境进行程序开发。

首先准备好APACHE+PHP平台,这里我使用的是UPUPW+PHP5.3版本,这里需要注意的是,我一开始用的是最新版的PHP7的版本,但是PHP7所带的ORACLE的控件是ORACLE12c的版本,但是我这边生产数据库的版本是ORACLE9I,12C已经不支持9I的连接了,所以才用了PHP5.3的版本,这个PHP版本所带的ORACLE控制是ORACLE11G的版本,可以连接ORACLE9I。

第二步配置好UPUPW中的APACHE的站点,默认目录后,我们还需要对PHP进行设置,打开对ORACLE数据和PDO的支持,我们找到UPUPW的安装目录,并且找到php5/php.ini文件,用记事本打开,将对应的dll文件前面分号去掉,如下代码所示。

;extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_sqlsrv.dll
extension=php_oci8.dll
extension=php_oci8_11g.dll
extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_sqlsrv.dll
extension=php_pdo_oci.dll
extension=php_pdo_odbc.dll

这里主要有3个 extension=php_oci8.dll extension=php_oci8_11g.dll extension=php_pdo_oci.dll 需要去掉前面注释符号。

第三步我们需要ORACLE11G的基本客户端,这里需要注意的是PHP提供的ORACLE数据连接控制都是32位的,所以我们同样对应的也需要获取32位的ORACLE11G的基本客户端,客户端在ORACLE官方网站获取:https://www.oracle.com/technetwork/topics/winsoft-085727.html ,需要登陆才可以下载。

首先需要同意相关协议

然后找到Version 11.2.0.4.0 ,注意:这里还需要微软的2005运行库(32位),请自行搜索下载。

下载完成后是一个压缩包,放到任务目录下解压缩,这样我们就获得一个客户端了。

第四步我们需要为客户端进行配置,首先是将解压后的目录加入环境变量,这里我的目录是“d:\\instantclient_11_2”,我们打开计算机属性->高级系统设置->环境变量->在系统变量里找到PATH,然后将目录加进去。

加入ORALCE客户端目录到最未,注意与前的变量用“;”隔开。

然后我们回到“D:\instantclient_12_2”目录,这里有许多对应文件,这里我们还需要一个配置文件,我们新建一个监听TNS文件tnsnames.ora,文件内容如下: 

test_db=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.xx)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

其中HOST为数据库服务器IP,SERVICES_NAME为数据库服务器实例名称,正式连接直接建议用SQLPLUS或者其它工具先连一下目标数据库,看看网络是否畅通。

第五步我们就可以用PHP的PDO进行连接了。

define('DB_HOST', 'oci:dbname=//192.168.1.x:1521/orcl;charset=utf8');
define('DB_USER', 'xxx');
define('DB_PWD', 'xxx');

  class DBPDO {  
  
        private static $instance;         
        public $dns;         
        public $dbuser;         
        public $dbpwd;         
        public $sth;         
        public $dbh;   
  
        //初始化  
        function __construct() {  
            $this->dns = DB_HOST;  
            $this->dbuser = DB_USER;  
            $this->dbpwd = DB_PWD;  
            $this->connect();  
       
        }  
  
        //连接数据库  
        public function connect() {  
            try {  
                $this->dbh = new PDO($this->dns, $this->dbuser, $this->dbpwd);  
            }  
            catch(PDOException $e) {  
                exit('连接失败:'.$e->getMessage());  
            }  
        }  
}

$sql="select * from xxx where xxx = :xx1 and yy = :yy1 ";
	$mypdo = new DBPDO; ;
	$rs = $mypdo->select($sql,array(':xx1' => $xx1,':yy1'=>$yy1);
    echo $rs[0]["xxx"];

猜你喜欢

转载自blog.csdn.net/gbnew/article/details/87967104