2015-11-07 2 views
1

Я хочу вставить текстовый файл в столбце Blob таблицы. Я использую PHP для этого. Запрос я использовал:Oracle Query Inserting Empty Blob

$qry = "INSERT INTO blobTable(date_input,file_name,blob_CONTENT) VALUES (SYSDATE,'$fileName',empty_blob()) RETURNING blob_CONTENT INTO :blob_CONTENT"; 
$stmt = OCIparse($conn,$qry); 
$blob = ocinewdescriptor($conn, OCI_D_LOB); 
ocibindbyname($stmt, ":Blob_CONTENT", $blob, -1, OCI_B_BLOB); 
ociexecute($stmt); 
$result = oci_num_rows($stmt); 
ocicommit($conn); 
ocifreestatement($stmt); 
$blob->free(); 

Но вместо этого он вставляет Пусто Blob в этой таблице. Я также пробовал его с utl_raw.cast_to_raw, но он имеет ограничение 2K, но мои файлы должны быть размером> 10M.

С чем я должен изменить свой запрос?

+0

почему mysql ?????? –

ответ

0

Хорошо, я получил это, изменив код немного.

$tmpName = $_FILES['datafile']['tmp_name']; //Temporary name of my file 
$qry = "INSERT INTO fileTable(date_input,file_name,file_CONTENT) VALUES (SYSDATE,'$fileName',empty_blob()) RETURNING file_CONTENT INTO :file_CONTENT"; 
$stmt = OCIparse($conn,$qry); 
$blob = ocinewdescriptor($conn, OCI_D_LOB); 
ocibindbyname($stmt, ":file_CONTENT", $blob, -1, OCI_B_BLOB); 
ociexecute($stmt, OCI_DEFAULT); 
if ($blob->savefile($tmpName)){ 
//Missed this step initially. 
    oci_commit($conn); 
    echo "Blob successfully uploaded\n"; 
} 
else 

{ 
    echo "Couldn't upload Blob\n"; 
} 
$result = oci_num_rows($stmt); 
ocicommit($conn); 
ocifreestatement($stmt); 
$blob->free();