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

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

【问题讨论】:

标签: php oracle


【解决方案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 和网络服务器,因此请检查两者。
      • 重新启动您的网络服务器

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

      【讨论】:

        【解决方案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
        

        【讨论】:

          猜你喜欢
          • 2019-12-30
          • 2014-02-13
          • 2020-09-20
          • 2017-05-18
          • 2015-05-29
          • 2015-02-20
          • 2011-09-12
          • 2014-01-25
          • 2012-03-14
          相关资源
          最近更新 更多