Posts Tagged ‘ Oracle Blob

[PHP] Upload รูปลง Oracle

มีงานที่ต้องใช้ PHP ทำการ Upload รูปลงไปเก็บใน Database Oracle 10G ซึ่งผมไม่ค่อยชอบงานแบบนี้เลย แต่ก็ค้นหาจาก อ.google ได้ หนทางสว่างมาประมาณนี้

$conn = oci_connect("user", "password", "host");
//Create oracle lob descriptor 
$lob = oci_new_descriptor($conn, OCI_D_LOB);
$sql = "INSERT INTO TEST(ID, NAME, IMG) VALUES('1','XX', EMPTY_BLOB()) RETURNING IMG INTO :FILE_DATA";
//Create Statement
$stmt = oci_parse($conn, $sql);
//Bind blob return data
oci_bind_by_name($stmt, ":FILE_DATA", $lob, -1, OCI_B_BLOB);

//Exceute insert
$rc = oci_execute($stmt, OCI_DEFAULT);
if($rc){
	//function $lob->savefile(...) reads from the uploaded file. to binay save to db
	if ($lob->savefile($_FILES['FILE_IMG']['tmp_name'])) {
		//Commit transaction
		oci_commit($conn);
	}else{
		//Rollback transaction
		oci_rollback($conn);
	}
}else{
	//Rollback transaction
	oci_rollback($conn);
}

//Close resource
oci_free_descriptor($lob);
oci_free_statement($stmt);
oci_close($conn);

หมายเหตุ : ใช้ได้ทั้งรูป ไฟล์ครับ สำหรับ CLOB ก็ไม่น่าจะแตกต่างจากนี้
แหล่งข้อมูล
Working with LOBs in Oracle and PHP
PHP Oracle FAQ