如何从 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页面中吧数据循环输出呀