1. windows上安装扩展oci8php连接Oracle 使用的<br />环境是 phpstudy

1.添加oci8扩展

下载地址 http://pecl.php.net/package/oci8
image.png
这里有很多版本,里面对应的有php版本,点击 DLL 进入查看,最新的扩展版本里面没有低版本的php,根据自己的实际情况
image.png
需要对应自己php的版本选择扩展版本下载,
将安装包内三个的dll文件复制到php的ext文件夹下
打开配置文件php.ini,开启扩展,添加以下内容
extension=php_oci8
extension=php_oci8_11g.all
这里的_11g是扩展库,一会需要用到找个版本号
将php的安装路径跟ext文件夹的路径,添加到环境变量中去,(我也不知道最后用没用上,管不管用)
image.png

2.如果本地没有oracle,需要下载客户端,其实就是用到几个扩展文件

下载地址 https://www.oracle.com/cn/database/technologies/instant-client/winx64-64-downloads.html
image.png
这个时候就需要上面开启扩展的版本号了 _11g ,找到对应的11版本,下载 Basic Package
image.png
不过下载需要注册,用邮箱注册一个就行,也可以在网上找对应版本的资源下载,
将里面的三个扩展文件复制
oci.dll、oraociei11.dll、orannzsbb11.dll
将三个文件分别复制到目录 :C:\Windows\System32 和 :C:\Windows\SysWOW64 中
都需要复制进去,之前是复制到php的ext中去,发现不管用,(不知道是不是需要这么做)
现在就开启oci8扩展了,phpinfo() 就可以看到
image.png

3.php连接 oracle

  1. $config = array(
  2. 'dbconfig' =>
  3. array(
  4. 'db_host_name' => '11.11.11.111:1521/ORCL',
  5. 'db_user_name' => 'nmae',
  6. 'db_password' => 'word',
  7. ),
  8. );
  9. //取数据库参数
  10. $db_host_name = $config['dbconfig']['db_host_name'];
  11. $db_user_name = $config['dbconfig']['db_user_name'];
  12. $db_pwd = $config['dbconfig']['db_password'];
  13. //连接Oracle - 两种形式 一个是用sid的,需要填写编码格式,不然中文乱码 AL32UTF8
  14. // $conn = oci_connect($db_user_name,$db_pwd,$db_host_name);
  15. $conn = oci_connect($db_user_name, $db_pwd, "(DESCRIPTION =
  16. (ADDRESS_LIST =
  17. (ADDRESS = (PROTOCOL = TCP)(HOST = 11.11.11.111)(PORT = 1521))
  18. )
  19. (CONNECT_DATA =
  20. (SID = sid值)
  21. )
  22. )",'AL32UTF8');
  23. //连接状态
  24. if (!$conn) {
  25. $e = oci_error();
  26. print htmlentities($e['message']);
  27. } else {
  28. //执行sql
  29. //时间需要格式化,
  30. // $query = "SELECT V_CDM_CALENDAR.*,to_char(CALDATE,'YYYY-MM-DD HH24:MI:SS')as aa FROM V_CDM_CALENDAR";
  31. $query = "Select object_name From user_objects Where object_type='VIEW'";
  32. // 配置SQL语句,准备执行
  33. $stid = oci_parse($conn, $query);
  34. if (!$stid) {
  35. $e = oci_error($conn);
  36. print htmlentities($e['message']);
  37. exit;
  38. }
  39. // 执行SQL。OCI_DEFAULT表示不要自动commit
  40. $r = oci_execute($stid, OCI_DEFAULT);
  41. if (!$r) {
  42. $e = oci_error($stid);
  43. echo htmlentities($e['message']);
  44. exit;
  45. }
  46. //返回执行结果
  47. while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {
  48. var_dump($row);
  49. }
  50. //关闭连接
  51. oci_close($conn);
  52. }