ODBC、oracle的专用接口,如果WEB服务器和oracle没在一台机器上的话,你就必须在WEB服务器上装oracle的客户端,我试过只有JDBC可以不使用oracle的客户端就可以和服务端建立联接,当然如果你不想专oracle的客户端的话就必须自己把一些必须的DLL文件手动添加。
解决方案 »
- 一个网页,不能运行2个SQL语句吗
- 新手求助!
- mysql字符集问题(关于GB2312和UTF-8,韩文、日文的处理)
- 请教在zend studio for eclipse怎样使用zend studio的快捷键,或者自定义快捷键.
- Parse error: parse error, unexpected $end
- PHP怎么读取远程的这个XML文档,并输出
- 求一个算法
- mysql 两个数据库,两张表字段不同,如何导入(老是报错,请教高手)
- 如何将文件上传到SQLSERVER中的IMAGE字段
- 传递参数问题?
- zxyufan,要生日礼物!!!!~~~~
- 为什么找不到extension_dir路径?
文件來源
Pbvm60.dll
C:\program files\Sybase\share 必不可少
Pbdwe60.dll
C:\program files\Sybase\share 必不可少
Pbo7360.dll
C:\program files\Sybase\share 必不可少
Ociw32.dll
%Oracle_homes%\bin 必不可少
Core35o.dll
%Oracle_homes%\bin 必不可少
Nlsrtl32.dll
%Oracle_homes%\bin 必不可少
Core35.dll
%Oracle_homes%\bin 必不可少
Ora73.dll
%Oracle_homes%\bin 必不可少
Ncrnt.dll
%Oracle_homes%\bin 必不可少
Nnfnnt.dll
%Oracle_homes%\bin 必不可少
Nnfdnt.dll
%Oracle_homes%\bin 必不可少
Ntnt.dll
%Oracle_homes%\bin 必不可少
Otrace73.dll
%Oracle_homes%\bin 必不可少
Nlnt.dll
%Oracle_homes%\bin 必不可少
Nasnsnt.dll
%Oracle_homes%\bin 必不可少
Nsnt.dll
%Oracle_homes%\bin 必不可少
Sqltnsnt.dll
%Oracle_homes%\bin 必不可少
Nttnt.dll
%Oracle_homes%\bin 必不可少
Ntnnt.dll
%Oracle_homes%\bin 必不可少
Tnsnames.ora
%Oracle_homes%\network\admin 必不可少
Sqlnet.ora
%Oracle_homes%\network\admin 必不可少
Lx*.nlb
%Oracle_homes%\nlsrtl32\data 共有414個文件,其中,Lx3*.nlb(63個文件)不需要,其餘351個文件是必不可少的,全部文件大小不超過2M,
測試環境: 我找了一台新電腦,裝上Win98,建立一個新目錄:C:\test,將上述文件copy到此目錄下, 再修改註冊表:\\HKEY_LOCAL_MACHINE\SOFTWARE下的內容 在SOFTWARE下新增一個子鍵:ORACLE 選擇ORACLE,在對應右窗格內新增兩個串值: NLSRTL32 其值爲:C:\TEST NLS_LANG 其值爲:TRADITIONAL CHINESE_TAIWAN.ZHT16BIG5 其中,NLSRTL32是爲*.NLB文件指明搜索路徑,NLS_LANG則是指明ORACLE的符集,我 測試時用的是繁體中文. 其後我又找了兩台未裝ORACLE的電腦測試,屢試不爽. 說明:若是PB7或ORACLE8,上述文件請對照更改,有一些dll文件是位於C:\windows\system下,如:netbios.dll等是Windows自有的,所以未列入,實際作業時請酌情考慮. 借助工具:http://download.tiandown.com/pub/software/develop/dev-inst/setup6.exe Sax Setup是一個相當簡單易用的安裝打包工具,它有一個最大的特點就是能偵測出應用程序運行時所需要的dll文件,但不能偵測出其他類型的文件,且要註冊版本才行.Sax Setup 6.0 的註冊碼:3160-3194666-18 後記:以上過程,我花了近4天的時間,希望能為pb+oracle的開發者有所幫助,但請各位轉貼時, 注明出處,尊重作者勞動,以上內容如有不正確的地方也請來信指出,多多交流.
有php和orcal综合的网站吗?我几乎找不到。我需要实例。
<?
putenv("ORACLE_SID=ORCL");
putenv("ORACLE_HOME=/u1/app/oracle/product/8.0.5");
$handle = ora_logon("用户名@主机标识符(注:1)","密码") or die;
$cursor=ora_open($handle);
ora_commitoff($handle);
?>
注1:@后面的叫什么记不清了,就是那个联接oracle数据库都必须建的东东的名字。
下面是我写的测试程序
我是在客户端,可是说连不上啊
测试程序
<?
//文件名为test.php.
$conn=ocilogon("cht","1","chttest");
if($conn)
echo success;
else
echo fail;
?>
提示信息
Warning: _oci_open_server: ORA-12154: TNS:无法处理服务名 in e:\page\dzsw\test.php on line 3
fail
浅谈Windows下PHP4与Oracle8的连接设置 PHP在Linux/Unix下连接oracle8是很容易的事,但在windows平台下实在不易,本人经过长久的摸索才找到可靠的方法,不敢独享,
现公布出来以飨大家。 笔者使用的开发环境: windows 98 第二版 php4.04pl1 apache 1.3.14 window版 oracle 8.05客户端 PHP以CGI方式安装完毕测试成功后。以以下代码测试
<?php
$conn = OCILogon("cinmsiii","cinmsiii","(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.202)(PORT = 1521))(CONNECT_DATA = (SID = unicom)))");
//$conn=OCILogon("cinmsiii","cinmsiii","cinms");如果oracle客户端是8.1.6i的话可以这样用,参数照上 if($conn!=false)
{
echo "ok";
OCILogoff($conn);
}
else
echo "false";
?> 关于连接参数问题:
连接串设为以下:
(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.202)(PORT = 1521))(CONNECT_DATA = (SID = unicom))) PROTOCOL:为使用的网络协议 HOST:为数据库服务器主机名 SID:为数据库的实例号 这样作后一般没有任何问题。 如果你的oracle 8客户端为 8.1.6i企业版,可以把这些参数设在连接串中,用 oracle8的net easy config实用工具设置。
将设置后的连接串名称作为连接串传入。 推测oracle 7.x也可以用此方法,因没有环境,未作测试,如果你有兴趣可以试试。
摘自:不详
--------------------------------------------------------------------------------
Calling example:
<?
$conn = OCILogon("www_cec", "webchn99", "unicorn");
#or you can just inclued file like "include("modcec_OCI_conn.php3");"$newOda= new ODA($conn);
#################
#or you can use login method like this
#$newOda-=new ODA();
#$newOda->Logon("www","99","corn");
###############################################
$newOda->CmdString=" update test set nouse='dfs' where login_name='guoyafeng'";
if(!$newOda->Execute()) {
echo $newOda->err;
}
else
{
echo $newOda->Rows; #get the affected row number.
}
#or you can call execute like this####
/*
$newOda->Execute(" update test set nouse='dfs' where login_name='guoyafeng'");
*/
##############################the following demostrate the open method.
$newOda->Open("select * from test")) or die $newOda->err;#Get data from RS
echo "count is" .$newOda->Rows;
for($i=0;$i<$newOda->Rows;$i++)
for($j=0;$j<$newOda->Cols;$j++)
{
echo $newOda->RS[$i][$j];
}
$newOda->Logoff();
?>
<?
/********************************************************************************#
# File Name:ODA.php3 #
# Author:Guo Yafeng #
# Function: Oracle DB Access. #
# Maint History: #
# Sept 18,2000 first release. #
# #
# #
#********************************************************************************/
/********************************************************************************#
#Object interface description: #
# Properties: #
# conn Connection Object #
# err_no Error No #
# err Error Description #
# CmdString SQL Statements to execute. #
# Rows Affected Rows. #
# RS Return value array.
# Cols #
# #
# Method: #
# Open Execute the CmdString and return value #
# Execute Execute the CmdString. #
#********************************************************************************/ file://$conn = OCILogon("www_ce", "ceonline99", "wsgp");
// $conn = OCILogon("www_cec", "webchn99", "unicorn");
// if ($SERVER_NAME == "")
// $SERVER_NAME = $HTTP_HOST;class ODA
{
function ODA($cn="") { if($cn!="")
$this->conn=$cn;
return TRUE;
}
function Logon($user,$pass,$db) {
if(!($this->conn = OCILogon($user, $pass, $db))){
$this->err_no=106;
$this->err="Error 106: Failed to logon.";
return FALSE;
};
return TRUE;
}
function Open($sql="") file://$this->CmdString
{
if($this->conn=="") {
$this->err_no=100;
$this->err="Error 100,Connection Object Required.";
return FALSE;
}
if($sql=="" and $this->CmdString=="") {
$this->err_no=101;
$this->err="Error 101,SQL Statement Required.";
return FALSE;
}
if($sql=="")
$sql=$this->CmdString;
if(!($cursor=OCIParse($this->conn,$sql))) {
$this->err_no=102;
$this->err="Server Internal Error: Failed to parse SQL Statement.";
return FALSE;
}
if(!OCIExecute($cursor)) {
$this->err_no=103;
$this->err="Server Internal Error: Failed to execute SQL Statement.";
return FALSE;
}
$this->Rows=0;
while(OCIFetchInto($cursor,$this->RS[$this->Rows])){
$this->Rows++;
}
$this->Cols=OCINumCols($cursor); if($this->Rows==0) {
$this->err_no=104;
$this->err="Warning: No rows affectted.RS result is not available.";
} OCIFreeStatement($cursor);
return TRUE;
}
function Execute($sql="") {
if($this->conn=="") {
$this->err_no=100;
$this->err="Error 100,Connection Object Required.";
return FALSE;
}
if($sql=="" and $this->CmdString=="") {
$this->err_no=101;
$this->err="Error 101,SQL Statement Required.";
return FALSE;
}
if($sql=="")
$sql=$this->CmdString;
if(!($cursor=OCIParse($this->conn,$sql))) {
$this->err_no=102;
$this->err="Server Internal Error: Failed to parse SQL Statement.";
return FALSE;
}
if(!OCIExecute($cursor)) {
$this->err_no=103;
$this->err="Server Internal Error: Failed to execute SQL Statement.";
return FALSE;
}
$this->Rows=OCIRowCount($cursor);
OCIFreeStatement($cursor);
return TRUE;
}
function LogOff(){
if(!OCILogoff($conn)){
$this->err_no=105;
$this->err="Server Internal Error: Failed to logoff database.";
return FALSE;
}
return TRUE;
}
}
?>
;Windows Extensions下面你会看到
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
把php_oci8.dll和php_oracle.dll前的“;”去掉,还有一个地方需要注意就是
extension_dir = ./
上面这个是用来设置php_oracle.dll等你需要装载的文件所在的位置。
配置完要重启IIS的服务才会生效。
接alt+ctrl+del在关闭程序中可以看到php,关闭后ie中会出现internal server error Apache/1.3.14 Server at localhost Port 80.若加上注释;则hello的测试程序可以通过,此时若执行测试连接程序则会出现不知道函数名ocilog,我想我是正常 的,可是去掉注释后,怎么会这样呢。在extension目录下,有这样的dll文件啊
而且有人说把它放到system下,并改include_path为php.exe和oci.dll的路径,我做过后,还是不行
Personal oracle8i是ORALCE数据库一个成熟的版本,简直就是ORACLE8i的浓缩版。允许程序或其他系统人员在单机上对ORACLE进行开发或学习工作,而不必在企业的数据库上进行,不需要高级的配置环境。对于想学习ORACLE的朋友来说,是一个非常适合的环境。
Personal oracle8i对系统的最第要求是:32MB内存,85MB磁盘空间。
相关下栽:
APACHE1.3.14: www.apache.org
php4.0.3 pl1: www.php.net
Personal Oracle8iR2(8.1.6): www.oracle.com
我的机器配置为MMX166,64MB EDO内存,10GB硬盘。
操作系统是:WIN98SE(OEM)
我试过D版的win98se,可是Personal ORACLE8i的NET8一直不能装上,所以劝大家还是不要用D版的WIN98来安装。
1. 安装personal oracle8i将下载后的ZIP文件进行解压,运行setup,稍等片刻后,即可看到PERSONLAL ORACLE的安装界面,按下一步,输入ORACLE的安装路径和HOME NAME,选择典型安装,这时安装界面的右上角会有一进度条,大概60%左右会弹出警告栏,说内存小于96MB,可能会出错什么的,不必理会,继续,好了,当出现下一个画面的时候,ORACLE8i开始安装了。如果在安装过程中出现有什么错误提示,说什么文件不能写入的话,不必理会,按忽略,这对数据库的安装没有什么影响。数据库安装完成之后,会自动执行net8配置助手,数据库设置助手等工具来设置客户端与数据库,其中会需要输据数据库的全局名称和SID,我们设置为“TEST”,这时要有点耐心,着需要很长的一段时间来完成数据库的设置。最后,当提示oracle成功安装的时候,这才算安装完成了。
2.安装PHP4.0.3pl1:将下载的ZIP文件解压到一目录,如“c:\apache\php",将php.ini-ist文件拷贝,并对以下几列进行修改:
指明路径:
doc_root=c:\apache\htdocs
extension_dir=c:\apache\php\extensions
去掉以下两行前面的“;”号:
extension=php_oci8.dll
extension=php_oracle.dll
3.安装APACHE1.3.14:下载后直接运行安装文件,按照提示进行安装即可。
在.\conf\http.conf中加入以下几行:
ScriptAlias /php/ "C:/apahce/php/"
Action application/x-httpd-php "/php/php.exe"
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
4.测试apahce:在开始菜单中启动APACHE服务,在IE地址栏中输入127.0.0.1,看到APACHE欢迎的画面,说明APACHE工作正常了。
5.测试PHP:使用文本编辑器,编辑PHP文件:
<?
//文件名为info.php
phpinfo();
?>
在IE地址栏中输入127.0.0.1/info.php,可以看到PHP的环境参数,如果找到有oricle和orci8的支持,说明PHP已经支持ORACLE和OCI8了。
6.测试与ORACLE的连接:
首先要配置好ORACLE客户端,我们可以使用NET8 CONFIGURATION ASSISTANT来配置,ORACLE网络端配置成功后,使用以下程序进行测试:
<?
//文件名为test.php.
$conn=ocilogon("system","manager","test");
if($conn)
print"oracle数据库连接成功";
else
print"oracle数据库连接失败";
?>
如果该程序返回成功标志,则表明连接成功了。如果要连接远程数据库,只需要在NET8 CONFIGURATION ASSISTANT中进行配置就可以了。