php mysql oracle_php连接Oracle数据库

要想用php连接Oracle,需要:

1.安装并配置Oracle instant Client

2.配置php的php_oci8_11g拓展

一、Window

(一)安装Oracle instant Client

根据系统和PHP版本信息去Oracle官网下载相应的Oracle instant Client版本

右键我的电脑,选中属性-高级系统设置-高级-环境变量,在Path中加入Oracle instant Client所在的路径

(二)配置php_oci8_11g拓展

根据phpinfo()的信息,前往oci8拓展下载相应版本的dll,将下载了的dll放到php的ext目录,并且在php.ini配置文件中加入extension=php_oci8_11g.dll,重启php,可以通过命令行调用php -m查看模块是否加载

(三)错误

1.提示"%1 不是有效的 Win32 应用程序"

Oracle instant Client版本有问题,要根据PHP版本来确定Oracle instant Client版本,比如虽然系统是64位,但如果PHP是32位的话,那么Oracle instant Client要选用32位的

二、Linux(redhat6)

(一)下载Oracle instant Client

(二)下载php_oci8源码包

根据phpinfo()的信息,前往oci8拓展下载相应版本的源码包,博主用的是PHP7,因此下载的是oci8-2.1.4.tgz

(三)安装

将Oracle instant Client的sdk包和basic包解压到同一目录,例如我解压到/opt,合并成/opt/instantclient_12_2目录。

[root@rhl6 opt]# unzip instantclient-basic-linux.x64-12.2.0.1.0.zip

[root@rhl6 opt]# unzip instantclient-sdk-linux.x64-12.2.0.1.0.zip

[root@rhl6 opt]# ls

instantclient_12_2

然后解压并编译oci8-2.1.4.tgz,注意编译参数的目录要跟你所解压的Oracle instant Client Lib目录对应

[root@rhl6 opt]# tar zxvf oci8-2.1.4.tgz

[root@rhl6 opt]# cd oci8-2.1.4

[root@rhl6 opt]# phpize

[root@rhl6 opt]# ./configure -with-oci8=instantclient,/opt/instantclient_12_2

[root@rhl6 opt]# make && make install

安装完成后在php.ini加入extension=oci8.so并且重新加载php-fpm/etc/init.d/php-fpm reload即可完成oci8拓展的配置。

(三)错误

1.遇到libclntsh.so not found的错误

给libclntsh.so.*.1做个软连接libclntsh.so

[root@rhl6 opt]# cd /opt/instantclient_12_2

[root@rhl6 instantclient_12_2]# ln -s libclntsh.so.12.1 libclntsh.so

三、Demo

// demo.php

$username = 'user';

$password = 'user12345';

// oracle10格式:[//]host_name[:port][/service_name] 示例://192.168.128.28:1521/USERDEV

// oracle11格式:[//]host_name[:port][/service_name][:server_type][/instance_name] 示例://192.168.128.28:1521/USERDEV

$connectText = '//192.168.128.28:1521/USERDEV';

putenv("NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK");

$conn = oci_connect($username, $password, $connectText);

if (!$conn) {

$e = oci_error();

echo 'Oracle连接失败
';

exit($e['message']);

}

echo 'Oracle连接完成';

// Prepare the statement

$stid = oci_parse($conn, "SELECT * FROM MYDB.USER");

if (!$stid) {

$e = oci_error($conn);

exit($e['message']);

}

// Perform the logic of the query

$r = oci_execute($stid);

if (!$r) {

$e = oci_error($stid);

exit($e['message']);

}

// Fetch the results of the query

print "

while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {

print "

\n";

foreach ($row as $item) {

$item = ($item !== null ? mb_convert_encoding($item, 'utf-8', 'gbk') : " ");

print "

" . $item . "\n";

}

print "

\n";

}

print "

\n";

oci_free_statement($stid);

oci_close($conn);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值