#39271 [Opn->Bgs]: oci_bind_array_by_name produces incorrect data

From: Date: Fri, 27 Oct 2006 21:56:27 +0000
Subject: #39271 [Opn->Bgs]: oci_bind_array_by_name produces incorrect data
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-104097@lists.php.net to get a copy of this message
ID: 39271 Updated by: tony2001@php.net Reported By: quelch at udel dot edu -Status: Open +Status: Bogus Bug Type: OCI8 related Operating System: Redhat EL 3 PHP Version: 5.1.6 New Comment: This one is pretty plain too - NUMBER(x,y) is just an alias for FLOAT, so you should be usign SQLT_FLT. Why Oracle doesn't return an error when you specify wrong bind type, I do not know. Previous Comments: ------------------------------------------------------------------------ [2006-10-27 21:29:51] quelch at udel dot edu The last comment also applies if you leave the original field definition as "NUMBER". Thus is seems that with the current code, one can't retrieve floating point data from the database using oci_bind_array_by_name. Is that a correct deduction? Thanks. ------------------------------------------------------------------------ [2006-10-27 21:25:59] quelch at udel dot edu However, if you have a column defined, say, as number (4,2) and place decimal values in it, you can't then get this data out using the "SQLT_INT" constant, as it truncates. I've updated my test case to do that at the link below. In this case, using SQLT_NUM gives me: Array ( [0] => 2688449 [1] => 2032833 [2] => 1377217 [3] => 721601 [4] => 128 ) Where I should get Array ( [0] => 4.4 [1] => 3.3 [2] => 2.2 [3] => 1.1 [4] => 0 ) Using the SQLT_INT constant gets me: Array ( [0] => 4 [1] => 3 [2] => 2 [3] => 1 [4] => 0 ) Which is not right either. ------------------------------------------------------------------------ [2006-10-27 14:56:24] quelch at udel dot edu Thanks. Is the documentation going to be updated to reflect this workaround? ------------------------------------------------------------------------ [2006-10-27 08:37:35] tony2001@php.net Change SQLT_NUM to SQLT_INT and it works fine. There is no difference for OCI8 between those two bind types (they are handled by the same function in the very same way), so there must be some difference in OCI library itself. ------------------------------------------------------------------------ [2006-10-26 21:40:18] quelch at udel dot edu I get the same error with the php5.2-200610262030 snapshot as I did with the php5.2-200610261830 snapshot and 5.1.6. Thanks. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/39271 -- Edit this bug report at http://bugs.php.net/?id=39271&edit=1

« previous php.bugs (#104097) next »