外包网www.waibao.com.cn
欢迎 游客 , 注册 | 登录 | 会员 | 界面 | 简洁版本 | 在线 | 帮助
外包网论坛(威客,威客网,悬赏任务)

如何成为一名群主?   

发表新主题 回复该主题
本主题被查看42次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第   上一主题   下一主题
标题: PHP教程:在PHP中将图片存放ORACLE中
版主
UID: 16051
来自:
精华: 0
积分: 6673
帖子: 6669
注册: 2008-6-10 11:56:00
状态: 离线
包子皮: 4.00
包子馅: 1670.50 元
只看楼主 2008-11-19 16:28
PHP教程:在PHP中将图片存放ORACLE中
我的身份:公司
认证信息:  未实名认证
基本诚信:0
项目诚信:0
经验积分:26
我的服务范围:
尚未填写
    
我这里提供一个用PHP操纵blob字段的例子给你,希望能有所帮助!
这个例子是把用户上传的图片文件存放到BLOB中。
假设有一个表,结构如下:
以下为引用的内容: CREATE TABLE PICTURES (
ID NUMBER,
DESCRIPTION VARCHAR2(100),
PICTURE BLOB
);
然后是用来处理数据的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', EMPTY_BLOB()) RETURNING picture INTO ICTURE");
//生成一个本地LOB对象的描述符。注意函数的第二个参数:OCI_D_LOB,表示生成一个LOB对象。其它可能的还有OCI_D_FILE和OCI_D_ROWID,分别对应于BFILE和ROWID对象。
lob = OCINewDescriptor(conn, OCI_D_LOB);
//将生成的LOB对象绑定到前面SQL语句返回的定位符上。
OCIBindByName(stmt, 'ICTURE', &lob, -1, 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);
?〉

                    
#1  
发表新主题 回复该主题
本主题被查看42次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第







现在的时间是 2009-01-09 05:32:41

版权所有 外包网  
         Powered by Discuz!NT 1.0.2656    Copyright © 2001-2009 Comsenz Inc.
Processed in 0.088 seconds