ID: 37059
Updated by: [EMAIL PROTECTED]
Reported By: a dot vigetti at provincia dot grosseto dot it
-Status: Open
+Status: Closed
Bug Type: OCI8 related
Operating System: debian linux 2.6.12-1-686-smp
PHP Version: 5.1.2
New Comment:
This constant is available only in CVS version.
Previous Comments:
[2006-04-13 12:01:50] a dot vigetti at provincia dot grosseto dot it
Ok i fixed OCI_DEFAULT and tried:
OCIBindByName ( $stmt, :fileimage, $fileimage, -1, SQL_LBI);
but the result is now:
Warning: ocibindbyname() expects parameter 5 to be long, string given
in /root/lavori/ArchiproNew/prove/LongRow.php on line 12
Warning: ociexecute(): ORA-01008: not all variables bound in
/root/lavori/ArchiproNew/prove/LongRow.php on line 13
I tried also SQLT_LBI in OciBindByName and got the same error message.
Another little but important mistake in my first post:
i cannot change the other application that use the same table.
Thanks
Aldo
[2006-04-12 19:25:06] [EMAIL PROTECTED]
Fixed in 5.1 and HEAD.
You should use:
OCIBindByName ( $stmt, :fileimage, $fileimage, -1, SQL_LBI);
And also note this:
ociexecute($stmt, $OCI_DEFAULT); -- OCI_DEFAULT is not a variable,
it's a constant.
[2006-04-12 16:00:34] a dot vigetti at provincia dot grosseto dot it
Description:
Oracle library version 10G R2.
I need to insert into an oracle table with a long raw,
i can't change the column type because another application use the same
table and i can change the application.
I experinced the same problem with other version of php/oci libs/Oracle
database.
Reproduce code:
---
This is a small code example that fails:
?php
/*
create table longRawTable( id number(10), fileimage long raw);
*/
$db=ocilogon(user,password, database);
$qs = insert into longRawTable (id, fileimage) .
values (:id, :fileimage);
$stmt = OCIParse($db, $qs);
$i=1;
$fileimage = file_get_contents( a_file );
OCIBindByName ( $stmt, :id, $i, -1);
OCIBindByName ( $stmt, :fileimage, $fileimage, -1);
ociexecute($stmt, $OCI_DEFAULT);
ocicommit($db);
?
When i try this script i obtain the following error:
Warning: ociexecute(): ORA-01461: can bind a LONG value only for insert
into a LONG column in /LongRow.php on line 13
Using a column of type LONG and storing data with the bin2hex function
all is OK.
Its a php or OCI problem?
I try a similar script in perl using DBD::Oracle on the same machine
linked with the same OCI libs without problems.
thanks
Aldo Vigetti
--
Edit this bug report at http://bugs.php.net/?id=37059edit=1