database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 1849 게시물 읽기
No. 1849
Re: php+oracle+리눅스 =>long type데이터를 insert하는법 좀 가르쳐주세요..고수님들
작성자
문태준
작성일
2000-10-25 23:37
조회수
7,806

long은 아니고 blob 예제입니다. 저는 pro*c로 blob 처리하는것 하려는데 정말로 안되네요. 쩝~

 

출처 : http://oops.org/SERVICE/jsboard/read.php?table=jsboard_oopsFAQ&no=45

 

2. LOB data 를 INSERT 할 경우

 

content 라는 blob filed에 $text 를 입력할 경우

 

<?

# blob에 넣을 내용. 만약 image file을 넣으려고 할때에는

# $text = addslashes($file_char)"; 의 형식으로 지정해야함

$text = "BLOB에 넣을 내용";

 

# DB 접속 TS -> table space

$oci[con] = OCILogon(TS,passwd,sid);

 

# 새로운 빈 descriptor LOB/FILE (LOB가 default)를 초기화

$lob = OCINewDescriptor($oci[con],OCI_D_LOB);

 

# :article 이라는 호스트변수선언

# blob filed에는 EMPTY_BLOB()를 지정하여 먼저 비워 놓는다.

$oci[sql] = "INSERT INTO tdoc (id,newsn,title,mid,miid,date,wdate,content)

VALUES ($id,$nno,'$title','$majors','$minors',

to_date('$pdate','YYYY.MM.DD'),

to_date('$wdate','YYYY.MM.DD HH:MI:SS'),EMPTY_BLOB())

return content into :article";

$oci[que] = OCIParse($oci[con],$oci[sql]);

 

# 선언된 호스트변수와 $lob를 바인딩

OCIBindByName($oci[que],":article",&$lob,-1,OCI_B_BLOB);

 

OCIExecute($oci[que],OCI_DEFAULT);

# 바인딩 되어진 $lob 변수에 BLOB에 들어갈 내용을 삽입.

$lob->save($text);

$lob->free();

OCICommit($oci[con]);

OCIFreeStatement($oci[que]);

OCILogOff($oci[con]);

?>

 

3. LOB data 를 UPDATE 할 경우

 

이번 예는 image를 가지고 하는 것으로 해 보지요. :-)

img 라는 blob filed에 $pimg 라는 image 내용을 update

 

INSERT 와 별 차이는 없습니다. LOB data를 UPDATE 하는 예제를 찾기가

정말 힘들더군요. 그래서 무조건 해 봤는데 INSERT랑 동일하게 하니 되

더군요 :-)

 

<?

 

# 사진 파일 내용을 읽어 변수로 받음

# 주의 : MySQL에서 image를 binary로 읽어서 입력을 할 경우에는

# addslashes() 함수를 이용하여 '"\ 와 같은 문자들을

# 감싸줘야 했으나 Oracle에서는 이를 하지 않아야 한다.

#

$fp = fopen("$img_dir/$f[$i]","r");

$pimg = fread($fp,filesize("$img_dir/$f[$i]"));

fclose($fp);

 

# DB 접속 TS -> table space

$oci[con] = OCILogon(TS,passwd,sid);

 

# 새로운 빈 descriptor LOB/FILE (LOB가 default)를 초기화

$lob = OCINewDescriptor($oci[con],OCI_D_LOB);

 

# :article 이라는 호스트변수선언

# blob filed에는 EMPTY_BLOB()를 지정하여 먼저 비워 놓는다.

$oci[sql] = "UPDATE tdoc SET isimg='1',rsvd='0',img=EMPTY_BLOB()

WHERE id=$id

return image into :image";

$oci[que] = OCIParse($oci[con],$oci[sql]);

 

# 선언된 호스트변수와 $lob를 바인딩

OCIBindByName($oci[que],":image",&$lob,-1,OCI_B_BLOB);

 

OCIExecute($oci[que],OCI_DEFAULT);

# 바인딩 되어진 $lob 변수에 BLOB에 들어갈 내용을 삽입.

$lob->save($pimg);

$lob->free();

OCICommit($oci[con]);

OCIFreeStatement($oci[que]);

OCILogOff($oci[con]);

?>

 

 

출처 : http://oops.org/SERVICE/jsboard/read.php?table=jsboard_oopsFAQ&no=42

 

2-2. LOB data를 사용할 경우

 

http://technet.oracle.co.kr/isp/plsql/kaesipan_query?seqno=20000425163857 참조할것.

 

<?

$con = OCILogon("USER","PASSWD","SID");

$sql = "SELECT title, content FROM tdoc WHERE id = $id";

$que = OCIParse($con,$sql);

 

OCIDefineByName($que,"CONTENT",&$cont);

OCIDefineByName($que,"TITLE",&$title);

 

OCIExecute($que,OCI_DEFAULT);

OCIFetch($que);

 

# LOB data는 Object를 다음과 같이 풀어 줘야 한다.

$content = $cont->load();

 

echo "

$no . $title<br>\n

<p>

<pre>\n$content\n</pre>";

 

OCIFreeStatement($que);

 

OCILogoff($con);

?>

 

2-3 Image data가 DB안에 있을 경우!

 

DB field에 image존재 여부에 대한 field를 정의를 해 놓는 것이 좋다.

image가 존재할 경우에는 image의 경로를 아래와 같이 임의의 파일로

지정을 한다.

 

if($isimage) $imagepath = "<img scr=image_display.php?id=$id align=left>";

 

다음 image_display.php를 다음과 같이 생성을 한다.

 

<?

$con = OCILogon("USER","PSAAWD","SID");

$sql = "SELECT image FROM TABLE_NAME WHERE id = $id";

$que = OCIParse($con,$sql);

 

OCIDefineByName($que,"IMAGE",&$image);

 

OCIExecute($que,OCI_DEFAULT);

OCIFetch($que);

 

# 다른곳과 동일하나 Image의 경우 binary이기 때문에 깨진 문자로 표현이

# 되므로 미리 헤더를 보내줘야 한다.

Header("Content-type: image/jpeg");

$image = $image->load();

 

echo "$image";

 

OCIFreeStatement($que);

OCILogoff($con);

?>

[Top]
No.
제목
작성자
작성일
조회
1842DB생성시 에러..
비바람
2000-10-25
5350
1840database 를 생성할때 사용한 script 는 어디에 있나요?
이창훈
2000-10-24
4712
1841┕>Re: database 를 생성할때 사용한 script 는 어디에 있나요?
이경록
2000-10-24 22:41:46
5453
1848 ┕>-&gt; 설치시 스크립트 이용하면 될 듯.. $ORACLE_HOME/assistants/dbca
문태준
2000-10-25 23:28:03
5038
1839db에 insert시 timeout 발생해요...???
최원준
2000-10-24
5668
1838php+oracle+리눅스 =&gt;long type데이터를 insert하는법 좀 가르쳐주세요..고수님들
삐삐^^
2000-10-24
6944
1849┕>Re: php+oracle+리눅스 =&gt;long type데이터를 insert하는법 좀 가르쳐주세요..고수님들
문태준
2000-10-25 23:37:59
7806
1837[공고] 질문 올리는 방법에 대한 글 (질문전에 반드시 봐 주시기 바랍니다)
정재익
2000-10-24
4757
1826이것좀 아시는분 ....
조형래
2000-10-24
4809
1830┕>Re: 이것좀 아시는분 ....
김규태
2000-10-24 13:50:03
4387
1823아주 급합니다. 꼭 봐주세요.
이정득
2000-10-24
5067
1829┕>Re: 아주 급합니다. 꼭 봐주세요.
김규태
2000-10-24 13:48:40
4975
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다