php操纵oracle的BLOB字段总是出错,迷茫中.......

lj2k 2002-11-14 05:01:02
根据正规渠道得到的资料如下:

下面的这个例子是把用户上传的图片文件存放到BLOB(或BFILE中,操作稍有不同)中。
首先要建一个表,结构如下:
CREATE TABLE PICTURES (
ID NUMBER,
DESCRIPTION VARCHAR2(100),
MIME VARCHAR2(128),
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, -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);
?>

可是总是出错,出错信息:

Warning: OCILobWrite: ORA-22990: LOB 定位器无法扩展事务处理

或者:

Warning: Can't open file http://198.198.1.254/test/007.jpg

不明白为什么?有哪位大虾可以告诉我,在下感激涕零!!!!!

...全文
134 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
foolalien 2002-12-25
  • 打赏
  • 举报
回复
$stmt = OCIParse($conn,"INSERT INTO PICTURES (id, description, picture) VALUES (pic_seq.NEXTVAL, '$description', '$lob_upload_type', EMPTY_BLOB()) RETURNING picture INTO :PICTURE");


sql不对,分解:
$sql="INSERT INTO PICTURES (id, description, mime,picture) VALUES (pic_seq.NEXTVAL, '$description', '$lob_upload_type', EMPTY_BLOB()) RETURNING picture INTO :PICTURE";
_Shakespeare 2002-11-14
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1141/1141706.xml?temp=.7269403

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧