在windows上安装扩展oci8,php连接Oracle 使用的<br />环境是 phpstudy
1.添加oci8扩展
下载地址 http://pecl.php.net/package/oci8
这里有很多版本,里面对应的有php版本,点击 DLL 进入查看,最新的扩展版本里面没有低版本的php,根据自己的实际情况
需要对应自己php的版本选择扩展版本下载,
将安装包内三个的dll文件复制到php的ext文件夹下
打开配置文件php.ini,开启扩展,添加以下内容
extension=php_oci8
extension=php_oci8_11g.all
这里的_11g是扩展库,一会需要用到找个版本号
将php的安装路径跟ext文件夹的路径,添加到环境变量中去,(我也不知道最后用没用上,管不管用)
2.如果本地没有oracle,需要下载客户端,其实就是用到几个扩展文件
下载地址 https://www.oracle.com/cn/database/technologies/instant-client/winx64-64-downloads.html
这个时候就需要上面开启扩展的版本号了 _11g ,找到对应的11版本,下载 Basic Package
不过下载需要注册,用邮箱注册一个就行,也可以在网上找对应版本的资源下载,
将里面的三个扩展文件复制
oci.dll、oraociei11.dll、orannzsbb11.dll
将三个文件分别复制到目录 :C:\Windows\System32 和 :C:\Windows\SysWOW64 中
都需要复制进去,之前是复制到php的ext中去,发现不管用,(不知道是不是需要这么做)
现在就开启oci8扩展了,phpinfo() 就可以看到
3.php连接 oracle
$config = array(
'dbconfig' =>
array(
'db_host_name' => '11.11.11.111:1521/ORCL',
'db_user_name' => 'nmae',
'db_password' => 'word',
),
);
//取数据库参数
$db_host_name = $config['dbconfig']['db_host_name'];
$db_user_name = $config['dbconfig']['db_user_name'];
$db_pwd = $config['dbconfig']['db_password'];
//连接Oracle - 两种形式 一个是用sid的,需要填写编码格式,不然中文乱码 AL32UTF8
// $conn = oci_connect($db_user_name,$db_pwd,$db_host_name);
$conn = oci_connect($db_user_name, $db_pwd, "(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 11.11.11.111)(PORT = 1521))
)
(CONNECT_DATA =
(SID = sid值)
)
)",'AL32UTF8');
//连接状态
if (!$conn) {
$e = oci_error();
print htmlentities($e['message']);
} else {
//执行sql
//时间需要格式化,
// $query = "SELECT V_CDM_CALENDAR.*,to_char(CALDATE,'YYYY-MM-DD HH24:MI:SS')as aa FROM V_CDM_CALENDAR";
$query = "Select object_name From user_objects Where object_type='VIEW'";
// 配置SQL语句,准备执行
$stid = oci_parse($conn, $query);
if (!$stid) {
$e = oci_error($conn);
print htmlentities($e['message']);
exit;
}
// 执行SQL。OCI_DEFAULT表示不要自动commit
$r = oci_execute($stid, OCI_DEFAULT);
if (!$r) {
$e = oci_error($stid);
echo htmlentities($e['message']);
exit;
}
//返回执行结果
while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {
var_dump($row);
}
//关闭连接
oci_close($conn);
}