导航:首页 > 编程语言 > php操作oracle数据库

php操作oracle数据库

发布时间:2025-07-20 09:45:16

php及数据库

PHP调用三种数据库的方法

本文比较详细的介绍PHP调用MySQL、ODBC以及ORACLE数据库。

MySQL是一个小巧灵珑的数据库服务器软件,对于中、小型应用系统是非常理想的。除了支持标准的ANSI SQL语句外,最重要的是,它还支持多种平台,而在Unix/Linux系统上,MySQL支持多线程运行方式,从而能获得相当好的性能。它和PHP、 Apache一样,是属于开放源代码软件。其官方网站是:,上面提供Windows,Linux,Unix版本的源代码的下载。

注意,MySQL访问函数都需要有相应的权限才能运行。常用的相关函数介绍如下:

(1)integer mysql_connect(主机,用户名,口令);

此函数开始一个对指定主机上的MySQL数据库的连接。若该数据库位于一个不同地端口,则在主机名后加上冒号和端口号。所有参数均为可选的,缺省情况下分别对应为本地主机、用户正在执行的脚本名和空。主机可以是IP地址或域名。

在脚本执行结束时,连接被自动关闭,也可以用mysql_close提前关闭。

(2)boolean mysql_create_db(数据库名);

创建一个数据库。注意必须用一个带有创建数据库许可权的帐号打开连接。

(3)boolean mysql_select_db(数据库名,连接号);

选择缺省数据库。

(4)integer mysql_query(SQL语句,连接号);

对指定数据库进行查询。如果SQL语句是select,则返回一个结果号,否则返回的值可以不理会。如果失败,返回false.。

(5)array mysql_fetch_array(结果号);

取出下一行,返回一个数组.可以用数字下标访问(第一个字段是下标 0),也可以用字符串下标访问(即使用各字段名)。如已取了最后一行,返回 false.。

(6)mysql_fetch_row(结果号);

返回一个矩阵代表结果集中一行的所有域。每次调用都会产生下一行,直到没有行剩下时返回false。每个域值都由一个从零开始的偏移量索引。这是从查询中获取结果的最快方法。

(7)integer mysql_num_rows(结果号);

返回结果集中行的数目

(8)integer mysql_num_fields(结果号);

返回结果集中域的数目。

(9)integer mysql_list_dbs();

向服务器查询数据库列表。它返回一个结果指针,该指针可用于mysql_fetch_row函数及类似函数。

(10)mysql_list_tables(数据库名);

获取一个指向指定数据库的表单列表的结果指针。该结果指针可用于任何从结果集中获取行的函数。

(11)mysql_close(连接号);

关闭对数据库的连接。连接必须是由mysql_connect打开的。该函数的使用不是严格必需的,因为在脚本结束时,所有非永久链路都会被自动关闭。

(12)mysql_pconnect(主机,用户名,口令);

与mysql_connect完全相似,但建立一个"永久连接",该连接一经建立永不关闭,即使使用mysql_close函数或程序执行完毕也不关闭.下一次试图建立永久连接时,系统如发现已存在一个永久连接,则直接返回该连接号而不重新创建。

下面是一个调用MYSQL数据库并分页显示的例子。

<?

$pagesize = 5; //每页显示5条记录

$host="localhost";

$user="user";

$password="psw";

$dbname="book"; //所查询的库表名;

//连接MySQL数据库

mysql_connect("$host","$user","$password") or die("无法连接MySQL数据库服务器!");

$db = mysql_select_db("$dbname") or die("无法连接数据库!");

$sql = "select count(*) as total from pagetest";//生成查询记录数的SQL语句

$rst = mysql_query($sql) or die("无法执行SQL语句:$sql !"); //查询记录数

$row = mysql_fetch_array($rst) or die("没有更多的记录!"); /取出一条记录

$rowcount = $row["total"];//取出记录数

mysql_free_result($rst) or die("无法释放result资源!"); //释放result资源

$pagecount = bcdiv($rowcount+$pagesize-1,$pagesize,0);//算出总共有几页

if(!isset($pageno)) {

$pageno = 1; //在没有设置pageno时,缺省为显示第1页

}

if($pageno<1) {

$pageno = 1; //若pageno比1小,则把它设置为1

}

if($pageno>$pagecount) {

$pageno = $pagecount; //若pageno比总共的页数大,则把它设置为最后一页

}

if($pageno>0) {

$href = eregi_replace("%2f","/",urlencode($PHP_SELF));//把$PHP_SELF转换为可以在URL上使用的字符串,这样的话就可以处理中文目录或中文文件名

if($pageno>1){//显示上一页的裢接

echo "<a href="" . $href . "?pageno=" . ($pageno-1) . "">上一页</a> ";

}

else{

echo "上一页";

}

for($i=1;$i<$pageno;$i++){

echo "<a href="" . $href . "?pageno=" . $i . "">" . $i . "</a> ";

}

echo $pageno . " ";

for($i++;$i<=$pagecount;$i++){

echo "<a href="" . $href . "?pageno=" . $i . "">" . $i . "</a> ";

}

if($pageno<$pagecount){//显示下一页的裢接

echo "<a href="" . $href . "?pageno=" . ($pageno+1) . "">下一页</a> ";

}

else{

echo "下一页 ";

}

$offset = ($pageno-1) * $pagesize;//算出本页第一条记录在整个表中的位置(第一条记录为0)

$sql = "select * from pagetest LIMIT $offset,$pagesize";//生成查询本页数据的SQL语句

$rst = mysql_query($sql);//查询本页数据

$num_fields = mysql_num_fields($rst);//取得字段总数

$i = 0;

while($i<$num_fields){//取得所有字段的名字

$fields[$i] = mysql_field_name($rst,$i);//取得第i+1个字段的名字

$i++;

}

echo "<table border="1" cellspacing="0" cellpadding="0">";//开始输出表格

echo "<tr>";

reset($fields);

while(list(,$field_name)=each($fields)){//显示字段名称

echo "<th>$field_name</th>";

}

echo "</tr>";

while($row=mysql_fetch_array($rst)){//显示本页数据

echo "<tr>";

reset($fields);

while(list(,$field_name)=each($fields)){//显示每个字段的值

$field_value = $row[$field_name];

if($field_value==""){

echo "<td> </td>";

}

else{

echo "<td>$field_value</td>";

}

}

echo "</tr>";

}

echo "</table>";//表格输出结束

mysql_free_result($rst) or die("无法释放result资源!");//释放result资源

}

else{

echo "目前该表中没有任何数据!";

}

mysql_close($server) or die("无法与服务器断开连接!");//断开连接并释放资源

?>

开放数据库连接(ODBC)已成为一种与数据库进行通信的工业标准。PHP也提供了标准的接口,使得PHP能调用Access,SQL SERVER等数据库。其相关函数是:

(1)integer odbc_connect(string dsn, string user, string password)

连接到一个ODBC数据库源名字上。

(2)integer odbc_exec(integer connection, string query)或 odbc_do(integer connection, string query)

在一个连接上执行查询。

(3)boolean odbc_fetch_row(integer result, integer row)

从一个结果集中获取一行数据。Row参数是可选的,若为空缺,则返回下一个有效行。在结果集中不再剩余行时返回false。

(4)boolean odbc_close(integer connection)

关闭一个数据库的连接。若在该连接上有打开的事务,则返回一个错误,而且连接不会被关闭。

最后,还是看个分页的例子:

<?

//设定每页显示条数

$show_num = 10;

$spages = $pages;//避免$pages后期被改变

//定义连接

$dsn = "localhost";

$user = "sa";

$password = "";

//计算总记录数

$rs_num = "select count(*) as id from bbs where zu='0' and lei='".$lei."'";

$conn_id = odbc_connect($dsn,$user,$password);

$rnum = odbc_exec($conn_id,$rs_num);

while(odbc_fetch_row($rnum)){

$total_rs = odbc_result($rnum,"id");//将总记录数放入$total_rs变量

}

//计算与页有关的条数

$nnn = $total_rs / $show_num;//计算总页数

$hnnn = intval($nnn);//将总页数取整

$cnnnn = $nnn - $hnnn;

//计算所需总页数

switch ($cnnn){

case "0":

$hnnn++;

$nnn = $hnnn;//总页数

break;

default :

$nnn = $hnnn;//总页数

break;

};

if ($nnn == 0)$nnn++;

//计算页面改变所需的条件

$fore = $pages;

$next = $pages;

$fore -= 1;

$next += 1;

if ($fore > 0) {

echo "<a>首页</a>";

echo "<a>前页</a>";

};

if ($pages < $nnn) {

echo "<a>后页</a>";

echo "<a>尾页</a>";

};

echo "共".$nnn."页";

$query_string = "SELECT * FROM table where condition order by you wanted order";

$cur = odbc_exec($conn_id,$query_string);

//取到循环的顶部

$cnum = ($pages-1) * $show_num;//计算当前的记录游标的位置

//空循环到显示记录游标处
if ($cnum != 0){

for ($i=0;$i<=$cnum;odbc_fetch_row($cur));

};

$i=1;

//显示记录

while(odbc_fetch_row($cur)){

echo ;

if ($i == $show_num){//在不满页数时跳出程序

break;

};

$i++;

};

//关闭连接

odbc_close($conn_id);

?>

Oracle(甲骨文)是世界上最为流行的关系数据库。它是大公司推崇的工业化的强有力的引擎。我们先看看其相关的函数:

(1)integer ora_logon(string user , string password)

开始对一个Oracle数据库服务器的连接。

(2)integer ora_open(integer connection)

打开给出的连接的游标。

(3)integer ora_do(integer connection, string query)

在给出的连接上执行查询。PHP生成一个指示器,解析查询,并执行之。

(4)integer ora_parse(integer cursor, string query)

解析一个查询并准备好执行。

(5)boolean ora_exec(integer cursor)

执行一个先前由ora_parse函数解析过的查询。

(6)boolean ora_fetch(integer cursor)

此函数会使得一个执行过的查询中的行被取到指示器中。这使得您可以调用ora_getcolumn函数。

(7)string ora_getcolumn(integer cursor, integer column)

返回当前的值。列由零开始的数字索引。

(8)boolean ora_logoff(integer connection)

断开对数据库服务器的链接。

以下是向ORACLE数据库插入数据的示例程序:

<html>

<head><title>向ORACLE数据库中插入数据</title></head>

<body>

<form action="<?echo $PHP_SELF;?>" method="post">

<table border="1" cellspacing="0" cellpadding="0">

<tr>

<th>ID</th>

<th>name</th>

<th>Description</th>

</tr>

<tr>

<td><input type="text" name="name" maxlength="50" size="10"></td>

<td><input type="text" name="email" maxlength="255" size="30"></td>

<td><input type="text" name="Description" maxlength="255" size="50"></td>

</tr>

<tr align="center">

<td colspan="3"><input type="submit" value="提交"><input type="reset" value="重写"></td>

</tr>

</table>

</form>

<?

//先设置两个环境变量ORACLE_HOME,ORACLE_SID

putenv("ORACLE_HOME=/oracle/app/oracle/proct/8.0.4");

putenv("ORACLE_SID=ora8");

//设置网页显示中文

putenv("NLS_LANG=Simplified_Chinese.zhs16cgb231280");

if($connection=ora_logon("scott","tiger")) {

//库表test有ID,name,Description三项

$sql = 'insert into test(ID,name,Description) values ';

$sql .= '('' . $ID . '','' . $name . '',''. $Description . '')';

if($cursor=ora_do($connect,$sql)) {

print("insert finished!");

}

$query = 'select * from test';

if($cursor=ora_do($connect,$query)) {

ora_fetch($cursor);

$content0=ora_getcolumn($cursor,0);

$content1=ora_getcolumn($cursor,1);

$content2=ora_getcolumn($cursor,2);

print("$content0");

print("$content1");

print("$content2");

ora_close($cursor);

}

ora_logoff($connection);

}

?>

</body>

</html>
通过PHP你可以轻松的连接到数据库,请求数据并将其显示在你的web站点中,甚至修改数据库中的数据。 MySQL是一种很流行的数据库,并且在互联网中有许多有关PHP与MySQL的教程。MySQL是免费的,这一点也许就吸引了不少人。由于其广泛应用, 我就不想在这里赘述MySQL的使用方法了。Oracle被大量在企业应用中采用,因此我们就利用Oracle来介绍PHP与数据库的连接。我们当然不会 提及Oracle数据库的设计原理,原因是这已经超出了我们的讨论范围。
PHP提供了两套函数与Oracle连接,分别是ORA_和OCI函数。其中ORA_函数略显陈旧。OCI函数更新据说更好一些。两者的使用语法几乎相差无几。如前所述,你的PHP安装选项应该可以支持两者的使用。
想获得更多有关在Microsoft Windows平台上安装支持PHP3的Apache服务器的知识以及更多有关Oracle数据库的知识,请查阅以下URL:。
4.1 连接

if ($conn=Ora_Logon("user@TNSNAME","password"))
{
echo "SUCCESS ! Connected to database\n";
}
else
{
echo "Failed :-( Could not connect to database\n";
}
Ora_Logoff($conn);
phpinfo();
?>
以上代码使用TNSNAME(在你的tnsnames.ora文件中指明)定义的Oracle数据库名称、用户名称和密码连接数据库。在成功连接的基础上,ora_logon函数返回一个非零的连接ID并储存在变量$conn中。

4.2 查询

假设与数据库已经连接就绪,下面我们就来实际的应用对数据库的查询。下面的代码演示了一个连接并查询的典型例子:
/*
* 连接数据库并执行查询
*/
function printoraerr($in_cur)
{
// 检查Oracle是否出错
// 如果存在错误则显示
// 当指针被激活时每次请求Oracle后调用该函数
if(ora_errorcode($in_cur))
echo "Oracle code - ".ora_error($in_cur)."\n";
return;
}
/** 主程序 */
if (!($conn=ora_logon("user@TNSNAME","password")))
{
echo "Connection to database failed\n";
exit;
}
echo "Connected as connection - $conn
\n";
echo "Opening cursor ...
\n";
$cursor=ora_open($conn); printoraerr($cursor);
echo "Opened cursor - $cursor
\n";
$qry="select user,sysdate from al";
echo "Parsing the query $qry ...
\n";
ora_parse($cursor,$qry,0); printoraerr($cursor);
echo "Query parsed
\n";
echo "Executing cursor ...
\n";
ora_exec($cursor); printoraerr($cursor);
echo "Executed cursor
\n";
echo "Fetching cursor ...
\n";
while(ora_fetch($cursor))
{
$user=ora_getcolumn($cursor,0); printoraerr($cursor);
$sysdate=ora_getcolumn($cursor,1); printoraerr($cursor);
echo " row = $user, $sysdate
\n";
}
echo "Fetched all records
\n";
echo "Closing cursor ...
\n";
ora_close($cursor);
echo "Closed cursor
\n";
echo "Logging off from oracle...
\n";
ora_logoff($conn);
echo "Logged off from oracle
\n";
?>
(译者注:以上代码段缺少注释,请读者参考PHP Manual的Oracle数据库函数部分)

4.3 显示结果

以下代码演示了怎样查询数据库并将结果输出:
function printoraerr($in_cur, $conn)
{
// 检查Oracle是否出错
// 如果存在错误则显示
// 当指针被激活时每次请求Oracle后调用该函数
// If it encountered an error, we exit immediately
if(ora_errorcode($in_cur))
{
echo "Oracle code - ".ora_error($in_cur)."
n";
ora_logoff($conn);
exit;
}
return;
}

function exequery($w_qry,$conn)
{
$cursor=ora_open($conn); printoraerr($cursor,$conn);
ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn);
ora_exec($cursor); printoraerr($cursor,$conn);
$numrows=0;
$w_numcols=ora_numcols($cursor);
// 显示头部
echo "

\n";
for ($i=0;$i<$w_numcols;$i++)
{
$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";
echo "\t ".ora_columnname($cursor,$i)." \n";
}
echo "
\n";
while(ora_fetch($cursor))
{
echo " \n";
for ($i=0;$i<$w_numcols;$i++)
{
$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";
if(ora_columntype($cursor,$i)=="LONG")
echo " ".
ora_getcolumn($cursor,$i)."
\n";
else
echo " ".ora_getcolumn($cursor,$i)." \n";
printoraerr($cursor,$conn);
}
$numrows++;
echo "
\n";
}
if ($numrows==0)
echo " Query returned no records

\n";
else
{
echo " \n";
echo " Count \n";
echo " $numrows \n";
echo "
\n";
}
echo " \n";
ora_close($cursor);
return;
}

// 主程序
if(!($conn=ora_logon("user@SID","password")))
{
echo "Error: Cannot connect to database\n";
exit;
}
$qry="SELECT
deptno \"Dept\"
,empno \"Emp\"
,empnm \"Name\"
,salary \"Salary\"
FROM
employee
ORDER BY 1,2";
exequery($qry);
ora_logoff($conn);
?>
(译者注:以上代码段缺少注释,请读者参考PHP Manual的Oracle数据库函数部分)

4.4 基于HTTP的Oracle登录

将以下代码加在PHP页面代码之前以确认Oracle登录。注意你必须正确设定$ SID。
if(!isset($PHP_AUTH_USER))
{
Header("WWW-authenticate: basic realm=\"$SID\"");
Header("HTTP/1.0 401 Unauthorized");
$title="Login Instructions";
echo "

You are not authorized to enter the site

\n";
exit;
}
else
{
if (!($conn=ora_logon("$PHP_AUTH_USER@$SID",$PHP_AUTH_PW)))
{
Header("WWW-authenticate: basic realm=\"$SID\"");
Header("HTTP/1.0 401 Unauthorized");
$title="Login Instructions";
echo "

You are not authorised to enter the site

\n";
exit;
}
}
?>

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

如果返回值是资源的话,可以用函数mysql_fetch_array()mysql_fetch_assoc()mysql_fetch_row()中的任意一个!

Ⅲ 用PHP操纵Oracle的LOB类型的数据

《PHP+Oracle(OCI) 初步》中讲了如何用PHP中的OCI函数来连接Oracle数据库 执行一些SQL查询及关闭数据库连接 本文将讲述另一个难度稍大的问题 用PHP的OCI函数来操纵Oracle的LOB字段 阅读本文需要《PHP+Oracle(OCI) 初步》一文中的知识

用过Oracle的人都知道 Oracle有一种数据类型叫VARCHAR 用来表示不定长的字符串 VARCHAR 也是Oracle公司推荐使用的类型 但使用VARCHAR 有个问题 最大只能表示 个字符 也就相当于 个汉字 如果你的程序中某个字符的值要大于 个汉字 用VARCHAR 就不能满足要求了 这时候 你有两个选择 一是用多个VARCHAR 来表示 二是用LOB字段 这里我们来看看第二个办法

先来大体了解一下Oracle的LOB字段 Oracle的LOB类型分为三种 BLOB CLOB和BFILE CLOB称为字符LOB BLOB和BFILE是用来存储二进制数据的 CLOB和BLOB的最大长度是 GB 它们把值存放在Oracle数据库中 BFILE和BLOB类似 但它把数据放在外部的文件中 所以它又称为外部BLOB(External BLOB) 我想 我们对MYSQL应该都不会陌生 MYSQL中也有类似的数据类型 如TEXT和BLOB 在PHP的MYSQL函数中 对TEXT/BLOB的操作是直接的 就象其它类型的数据一样 但在Oracle中 情况就不一样了 Oracle把LOB当作一种特殊的数据类型来处理 在操作上不能用常规的方法 比如 不能在INSERT语句中直接把值插入到LOB字段中 也不能用LIKE进行查找

下面就通过几个例子来说明如何用PHP的OCI函数来插入 取出和查询LOB数据

一 插入

不能直接用INSERT语句向LOB字段中插入值 一般情况下 有如下的几步 .先分析一个INSERT语句 返回一个LOB的描述符 .用OCI函数生成一个本地的LOB对象 .将LOB对象绑定到LOB描述符上 .执行INSERT语句 .给LOB对象赋值 .释放LOB对象和SQL语句句柄

下面的这个例子是把用户上传的图片文件存放到BLOB(或BFILE中 操作稍有不同)中 首先要建一个表 结构如下 CREATE TABLE PICTURES ( ID NUMBER DESCRIPTION VARCHAR ( ) MIME VARCHAR ( ) PICTURE BLOB ); 如果要实现ID的自动增加 再建一个SEQUENCE: CREATE SEQUENCE PIC_SEQ;

然后是用来处理数据的PHP程序代码 <?php //建立Oracle数据库连接 $conn = OCILogon($user $password $SID); //提交SQL语句给Oracle //在这里要注意的两点 一是用EMPTY_BLOB()函数 这是Oracle的内部函数 返回一个LOB的定位符 在插入LOB时 只能用这个办法先生成一个空的LOB定位符 然后对这个定位符进行操作 EMPTY_BLOB()函数是针对BLOB类型的 对应于CLOB的是EMPTY_CLOB() 二是RETURNING后面的部分 把picture返回 让PHP的OCI函数能够处理 $stmt = OCIParse($conn INSERT INTO PICTURES (id description picture) VALUES (pic_seq NEXTVAL $description $lob_upload_type EMPTY_BLOB()) RETURNING picture INTO :PICTURE ); //生成一个本地LOB对象的描述符 注意函数的第二个参数 OCI_D_LOB 表示生成一个LOB对象 其它可能的还有OCI_D_FILE和OCI_D_ROWID 分别对应于BFILE和ROWID对象 $lob = OCINewDescriptor($conn OCI_D_LOB); //将生成的LOB对象绑定到前面SQL语句返回的定位符上 OCIBindByName($stmt :PICTURE &$lob OCI_B_BLOB); OCIExecute($stmt); //向LOB对象中存入数据 因为这里的源数据是一个文件 所以直接用LOB对象的savefile()方法 LOB对象的其它方法还有 save()和load() 分别用来保存和取出数据 但BFILE类型只有一个方法就是save() if($lob >savefile($lob_upload)){ OCICommit($conn); echo 上传成功<br> ; }else{ echo 上传失败<br> ; } //释放LOB对象 OCIFreeDesc($lob); OCIFreeStatement($stmt); OCILogoff($conn);

?>

还有一个要注意的地方 LOB字段的值最少要 个字符 所以在save()或savefile()之前 要确保值不能为空 否则 Oracle会出错

二 取出

对一个LOB中取出数据 有两种办法 一是生成一个LOB对象 然后绑定到一条SELECT语句返回的定位符上 再用LOB对象的load()方法取出数据 二是直接用PHP的OCIFetch***函数 第一种方法比第二种方法要麻烦得多 所以我直接说说第二种方法 还是用上面的表

<?php $conn = OCILogon($user $password $SID); $stmt = OCIParse($conn SELECT * FROM PICTURES WHERE ID=$pictureid ); OCIExecute($stmt); //秘密就在PCIFetchInfo的第三个参数上 OCI_RETURN_LOBS 第三个参数是FETCH的模式 如果OCI_RETURN_LOBS 就直接把LOB的值放到结果数组中 而不是LOB定位符 也就不用LOB对象的load()方法了 if (OCIFetchInto($stmt $result OCI_ASSOC+OCI_RETURN_LOBS)) { echo Content type: StripSlashes($result[MIME]); echo StripSlashes($result[PICTURE]); } OCIFreeStatement($stmt); OCILogoff($conn); ?>

这个程序用来显示放在LOB中的数据(图片) 调用方法(假设脚本名是getpicture php) <IMG SRC= getpicture php?pictureid= ALT= 放在Oracle LOB中的图片 >

三 查询

前面已经提了下 对于Oracle的LOB字段是不能用LIKE进行匹配的 怎么办呢?其实并不复杂 Oracle有一个匿名的程序包 叫DBMS_LOB 里面有所有的操作LOB所需的过程

假设有象这样一个表: CREATE TABLE ARTICLES ( ID NUMBER TITLE VARCHAR ( ) CONTENT CLOB );

文章的内容放在CONTENT字段中

现在我们要找出所以内容中包含 PHP中文用户 的文章 可以这么来做

<?php $conn = OCILogon($user $password $SID); //WHERE子句中用了DBMS_LOB INSTR过程 它有四个参数 前面两个分别表示LOB的定位符(可以直接用字段表示)和要查找的字符串 后面两个分别表示开始的偏移量和出现的次数 要注意的是必须判断它的返回值 也就是要大于 $stmt = OCIParse($conn SELECT * FROM ARTICLES WHERE DBMS_LOB INSTR(CONTENT PHP中文用户 ) > ); OCIExecute($stmt); if (OCIFetchInto($stmt $result OCI_ASSOC+OCI_RETURN_LOBS)) { } OCIFreeStatement($stmt); OCILogoff($conn); ?>

Oracle还提供了许多用来操作LOB数据的过程 如LENGTH SUBSTR等等 至于它们的详细用法 可以考虑Oracle的开发手册

lishixin/Article/program/PHP/201311/21377

Ⅳ php中连接oracle的代码怎么写

oci_connect("cxuser","caixun","caixun"); 最后一个参数是数据库名,如果你不是远程的,就不用写,直接用""就可以了

Ⅳ php,pdo怎么连接oracle数据库

php有强大的功能不但可以支持mysql,mssql,mysqli之个我们还可以与oracle数据连接,要让php支持oracle非常的简单我们只要把php.ini中的;extention = php_oci8.dll分号去掉即可.


请先安装oracle的客户端,能够用客户端访问oracle。


php支持oracle连接函数

php.ini文件中的配置,去掉 ;extention = php_oci8.dll,去掉前面的分号,重启apache就可以了,如果不行,我们再把php目录中的php_oci8.dll拷到windows系统的system32下面去吧.

oracle数据库建立链接,代码如下:

$conn=oci_connect('username','password',"(DEscriptION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))(CONNECT_DATA=(SID=test)))");

Ⅵ PHP如何连接oracle数据库

只要是一提到“System.Data.OracleClient的”
连接字符串的例子:
用户ID =用户;数据源=服务器/数据库名称;密码=通行; - 其他与SQLSERVER是相似的,但这样要改变的OracleConnection
SqlDataAdapter的SqlConnection的希望变为OracleDataAdapter
的SqlCommand的OracleCommand

阅读全文

与php操作oracle数据库相关的资料

热点内容
农村院子设计用什么app 浏览:287
哪个app办卡有佣金 浏览:400
怎样压缩jpeg图片 浏览:213
为什么没有人做公益类app 浏览:339
苏荷女友是什么APP 浏览:124
游戏ai算法 浏览:254
优盘里隐藏的文件夹怎么打开 浏览:226
安卓机多广告怎么办 浏览:898
linux邮件服务器sendmail 浏览:501
python去除中文 浏览:584
美居app如何去广告 浏览:9
安卓控制流混淆反编译 浏览:370
桩基钢筋笼搭接区域螺旋箍加密 浏览:156
苹果服务器什么时候存到云上贵州 浏览:665
加密文件没法解压 浏览:933
程序员写作的基本功 浏览:530
unionapp怎么免费下载 浏览:652
隐藏共享文件夹怎么用 浏览:111
什么服务器能把域名翻译成ip 浏览:665
只有编译程序能生成目标程序吗 浏览:302