#31042 [Opn->Asn]: oci_fetch_* set's filed value to "false"

From: Date: Thu, 09 Dec 2004 18:14:13 +0000
Subject: #31042 [Opn->Asn]: oci_fetch_* set's filed value to "false"
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-69985@lists.php.net to get a copy of this message
ID: 31042 Updated by: tony2001@php.net Reported By: arhip at goldentele dot com -Status: Open +Status: Assigned Bug Type: OCI8 related Operating System: Linux PHP Version: 5.0.2 -Assigned To: +Assigned To: tony2001 Previous Comments: ------------------------------------------------------------------------ [2004-12-09 18:59:59] arhip at goldentele dot com Description: ------------ I have Oracle 8.1.7 working on linux. Some Oracle params: NLS_RDBMS_VERSION => 8.1.7.2.0 NLS_CHARACTERSET => CL8ISO8859P5 I have table named utf8_test. SQL> desc utf8_test; Name Type Nullable Default Comments ---- ------------ -------- ------- -------- ID NUMBER Y NAME VARCHAR2(10) Y SQL> select * from utf8_test; ID NAME ---------- ---------- 1 òåñò 2 ïðîâåðêà The result of fetching data is depended from NLS_LANG. When I fetched data from this table a result is depended from NLS_LANG variable. 1) When I fetch data with NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251 character set, I receive 2 rows with correct data. 2) When I fetch data with NLS_LANG=RUSSIAN_CIS.UTF8 character set, I receive 2 rows, with incorrect data. Data in NAME field in 2-nd row is incorrect (FALSE instead of 'ïðîâåðêà'). But 1-st row is correct. I think the problem maybe in the folowing: This field is defined in database as varchar2(10); Length of the 1-st row NAME in UTF8 character set is 4*2=8 byte. (8<10) Length of the 2-nd row NAME in UTF8 character set is 8*2=16 byte. (16>10). Reproduce code: --------------- <? // oracle client NLS_LANG=RUSSIAN_CIS.UTF8 $conn = oci_new_connect( 'scott', 'tiger', 'DB' ); $cursor = oci_parse( $conn, 'select id, name from utf8_test' ); // tested with all oci_fetch_* functions oci_execute( $cursor, OCI_DEFAULT ); oci_fetch_all( $cursor, $result, 0, -1, OCI_FETCHSTATEMENT_BY_ROW ); print "<pre>"; var_dump($result); ?> Expected result: ---------------- array(2) { [0]=> array(2) { ["ID"]=> string(1) "1" ["NAME"]=> string(8) "òåñò" } [1]=> array(2) { ["ID"]=> string(1) "2" ["NAME"]=> string(16) "ïðîâåðêà" } } Actual result: -------------- array(2) { [0]=> array(2) { ["ID"]=> string(1) "1" ["NAME"]=> string(8) "òåñò" } [1]=> array(2) { ["ID"]=> string(1) "2" ["NAME"]=> bool(false) } } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=31042&edit=1

« previous php.bugs (#69985) next »