如何从PHP连接Oracle数据库

ecfsfe2w  于 2023-04-04  发布在  PHP
关注(0)|答案(6)|浏览(152)

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

oewdyzsn

oewdyzsn1#

第四个链接在谷歌搜索您的确切问题后,提出了以下链接: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];
    }
?>
ruarlubt

ruarlubt2#

我假设你想连接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>

login.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";
    }
}
?>
myzjeezk

myzjeezk3#

PHP提供Oracle OCI8 functions。其他选项是Oracle DriverODBC(如果oracle支持)的PDO。

fkvaft9z

fkvaft9z4#

我用最简单的方法创建了一个连接,如下所示:
步骤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.从[OTN InstantClient page][1]下载Windows版的“InstantClient Package - Basic”。确保从步骤1下载相应的位版本。
步骤3.将InstantClient文件解压缩到C:\instantclient_11_2并编辑Windows PATH环境以包含C:\instantclient_11_2。例如,在Windows XP上,按照“开始”〉“控制面板”〉“系统”〉
x一个一个一个一个x一个一个二个一个x一个一个三个一个

0wi1tuuw

0wi1tuuw5#

从你的问题中不清楚你是想配置你的PHP安装来连接到oracle,还是你只是想用php语法来建立连接?
由于这里已经有了一个Windows特定的答案和连接systax,这些链接应该为您指明了基于Linux安装Oracle客户端库的正确方向。
基本步骤是..

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

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

i86rm4rw

i86rm4rw6#

PHP有几个扩展,可以让应用程序使用Oracle数据库。连接到Oracle数据库的PHP扩展是用C编写的,并链接到PHP二进制文件中。这些扩展是:

  1. OCI8
  2. PDO_OCI PDO驱动程序
    也可以使用ODBC扩展;

使用PHP OCI 8扩展:-

<?php
// Create connection to Oracle
$conn = oci_connect("phphol", "welcome", "//localhost/orcl");
if (!$conn) {
   $m = oci_error();
   echo $m['message'], "\n";
   exit;
}
else {
   print "Connected to Oracle!";
}

// Close the Oracle connection
oci_close($conn);
?>

oci_connect()函数包含username作为phpholpassword作为welcomeconnection string作为//localhost/orcl。在这种情况下,使用Oracle的Easy Connect连接字符串语法。它由主机名和DB服务名称组成。
oci_close()函数关闭连接。当脚本结束时,任何未显式关闭的标准连接将自动释放。

使用PHP PDO扩展:-

<?php
$dbh = new PDO('oci:dbname=localhost/XE', 'hr', 'welcome');
$s = $dbh->prepare("select city from locations");
$s->execute();
while (($r = $s->fetch(PDO::FETCH_ASSOC)) != false) {
 echo htmlentities($r['CITY']) . "<br>";
}
?>

更多详情请参阅以下参考资料:

  1. oci_connect — Connect to an Oracle database
  2. OCI8 - Examples
  3. PDO_OCI
  4. PDO_OCI DSN — Connecting to Oracle databases
  5. Using PHP OCI8 with Oracle Database 11g
  6. Web 2.0 Applications with PHP and Oracle Database 11g

相关问题