如何从 PHP 连接 Oracle 数据库

Posted

技术标签:

【中文标题】如何从 PHP 连接 Oracle 数据库【英文标题】:How to connect an Oracle database from PHP 【发布时间】:2011-08-22 07:30:34 【问题描述】:

如何从 php 连接到 Oracle 数据库?

【问题讨论】:

你在找什么,连接字符串?看看 PDO 或 OCI_php.net/manual/en/intro.oci8.php 一件重要的事情:如果您想连接到远程 Oracle 服务器,那么您需要安装 Oracle Instant Client。更多信息和 OIC 链接在这里:de.php.net/manual/en/oci8.requirements.php 【参考方案1】:

PHP 提供Oracle OCI8 functions。其他选项是带有Oracle Driver 和(如果 oracle 支持)ODBC 的 PDO。

【讨论】:

【参考方案2】:

搜索您的确切问题后在谷歌中的第四个链接显示以下链接:http://me2learn.wordpress.com/2008/10/18/connect-php-with-oracle-database/

<?php
    $db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.34)(PORT = 1521)))(CONNECT_DATA=(SID=orcl)))" ;

    if($c = OCILogon("system", "your database password", $db))
    
        echo "Successfully connected to Oracle.\n";
        OCILogoff($c);
    
    else
    
        $err = OCIError();
        echo "Connection failed." . $err[text];
    
?>

【讨论】:

那篇博文似乎是特定于 Windows 的。【参考方案3】:

我假设您想将 php 与 oracle 数据库连接。所以,我给你两个文件,这是一个基本的 php-oracle 供你参考。祝你好运!

form.php

<form name="form1" method="post" action="login.php">
  <label> User Name
  <input type="text" name="nis" id="nis">
  </label>
  <label> Password
  <input type="password" name="password" id="password">
  </label>
  <label>
  <input type="submit" name="submit" id="button" value="Login">
  </label>
</form>

登录.php

<?php

//create table users (userid varchar2(10), password varchar2(20), constraint pk_users primary key (userid));
//insert into users values('kharis', 'pass123');

$nis = isset($_POST['nis']) == true ? $_POST['nis'] : '';
$password= isset($_POST['password']) == true ? $_POST['password'] : '';

if(empty($nis) or empty($password))
    echo "UserID atau Password kosong";
else

    $db = "(DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = patronus.ad-ins.com)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = XE)
        )
      )" ;
    $connect = oci_connect("HR", "hr", "XE");
    $query = "SELECT * from users WHERE userid='".$nis."' and password='".$password."'";
    $result = oci_parse($connect, $query);
    oci_execute($result);
    $tmpcount = oci_fetch($result);
    if ($tmpcount==1) 
        echo "Login Success";
    else
    
        echo "Login Failed";
    

?>

【讨论】:

【参考方案4】:

您的问题不清楚您是想将 PHP 安装配置为连接到 oracle,还是只希望 php 语法建立连接?

由于此处已经有 Windows 特定的答案和连接系统税,这些链接应该为您指明正确的方向,以安装基于 linux 的 Oracle 客户端库。

基本步骤是..

解压缩 Oracle 客户端库(Basic、SDK 和 sqlplus 包) 将 LD_LIBRARY_PATH 添加到您的环境中 修复一些库的符号链接 安装 PECL OCI8,这会编译共享对象,因此您的系统需要 C 编译器 在 php.ini 文件中启用扩展。请记住,您的系统可能有单独的 php.ini 文件用于 CLI 和网络服务器,因此请检查两者。 重新启动您的网络服务器

这些步骤在多个博客文章中,所以我不会在这里重新发明***。但是这里有一些看起来不错的链接

http://antistatique.net/fr/nous/bloggons/2013/03/25/install-php-oracle-oci-extension-11-2-on-mac-os-x-10-8 http://www.oracle.com/technetwork/articles/dsl/technote-php-instant-12c-2088811.html

【讨论】:

【参考方案5】:

我以最简单的方式创建了一个连接,如下所示:

步骤 1. 确定您正在运行的 PHP 位版本(32 位或 64 位)。 如果 PHP_INT_SIZE 的值为 4,则版本为 32 位。如果 PHP_INT_SIZE 的值为 8,则版本为 64 位。使用下面的代码:

<?php
    switch(PHP_INT_SIZE) 
        case 4:
            echo '32-bit version of PHP';
            break;
        case 8:
            echo '64-bit version of PHP';
            break;
        default:
            echo 'PHP_INT_SIZE is ' . PHP_INT_SIZE;
     
?>

步骤 2. 从以下位置下载适用于 Windows 的“InstantClient Package - Basic” [OTN InstantClient 页面][1]。确保从步骤 1 下载相应的位版本。

步骤 3. 将 InstantClient 文件解压缩到 C:\instantclient_11_2 和 编辑 Windows PATH 环境以包含 C:\instantclient_11_2。 例如,在 Windows XP 上,按照 `开始 > 控制面板 > 系统 >

Advanced > Environment Variables` and edit `PATH` in the `System`
> variables list.
Step 3. In your `php.ini` file, enable the following lines:
extension=php_oci8_11g.dll
extension=php_openssl.dll

Finally, restart your Apache server.

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

【讨论】:

以上是关于如何从 PHP 连接 Oracle 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何从 .Net Core 连接到 Oracle 数据库连接

如何从 PHP 代码调用复杂的 Oracle 过程

几种常用PHP连接数据库的代码示例

如何php调用oracle存储过程返回的是一个结果集,该怎么从php页面中吧数据循环输出呀

如何从 PL SQL Developer 的连接中找出 Oracle 连接字符串?

如何从 Oracle VM OBIEE 连接本地 sql 数据库