ID:               5444
 Updated by:       [EMAIL PROTECTED]
 Reported By:      schmidt at bcc dot de
-Status:           Closed
+Status:           Bogus
-Bug Type:         Oracle related
+Bug Type:         OCI8 related
 Operating System: linux 2.2 / glibc 2.1.3
 PHP Version:      4.0.1pl2


Previous Comments:
------------------------------------------------------------------------

[2000-07-09 13:06:34] thies at cvs dot php dot net

please make sure that ORACLE_HOME, ORACLE_SID and NLS_LANG are setted
in your environment *before* you start apache. do not use PutEnv() in
your php-script or SetEnv in your httpd.conf or .htaccess.


------------------------------------------------------------------------

[2000-07-07 22:53:07] schmidt at bcc dot de

It appears not to depend on the length of the varchars, but it works on
a BSD box where I still have to find the configure params...
Maybe it's a NLS or UTF or something else character encoding specific.
The data presented by Oracle already contains the zeroes (text is
"admin", retlen=10). A side effect of this is, a 8 chars text in a
varchar(10) can't be read and is truncated, a 18 chars text in a
varchar(20) is cut after the first char, and it doesn't throw a
warning...
OCIDebug: _oci_make_zval: CUSTID,retlen = 11,retlen4 = 0,storage_size4
= 11,indicator 0, retcode = 0
for "longtest", 
0a40  0a 43 55 53 54 49 44 20  2d 20 00 6c 00 6f 00 6e   .CUSTID.
-..l.o.n 
0a50  00 67 00 74 00 3c 42 52  3e 4e 41 4d 45 20 2d 20   .g.t.<BR
>NAME.-. 
is returned.
OCIDebug: _oci_make_zval: NAME,retlen = 1,retlen4 = 0,storage_size4 =
21,indicator 0, retcode = 0
OCIDebug: _oci_make_zval: PASSWORD,retlen = 2,retlen4 = 0,storage_size4
= 21,indicator 0, retcode = 0

------------------------------------------------------------------------

[2000-07-07 21:23:40] schmidt at bcc dot de

Any select command on VARCHARS (256+) does not return a "regular"
string, but (following a tcpdump) contains 0<CHAR>0<CHAR>0<CHAR>...
This causes a non-display with Netscape (not even visible in page
source) 4.7x on Linux & Win (at least). Lynx and MSIE (at least) do
work.
I consider this a bug, as with PHP 3 the output was valid (and visible
with Netscape).

I'm using Oracle 8.0.5.0.0 Linux - my PHP configuration command was
--without-pgsql --without-mysql --with-oci8 --with-zlib
--sysconfdir=/etc --without-gd --with-apxs
The webserver is not the same as the db machine, if this matters.

The table is like 
create table tab (col1 varchar(256), col2 varchar(256), col3
varchar(256))
and the code used to print looks like

function _db_nextresult($result) {
        if (OCIFetchInto($result, $fetcharray, OCI_ASSOC)) {
                return $fetcharray;
        } else {
                return false;
        }
}

for ($result_b = _db_nextresult ($result), $i=0; $result_b; $i++) {
        while (list ($key, $val) = each ($result_b) ) {
                echo "$key - $val<BR>";
        }
        $result_b = _db_nextresult ($result);
 }

Note that with 
printf ("%s - %s<BR>\n", $key, $val);
you wan't see a single thing, not even with lynx or MSIE, as IMHO the
zero in the string terminates it before the first character is printed.
It also becomes quite difficult to parse the string and replace the
zeroes....

If you want to take a look at it, feel free to visit
http://something.bcc.de/test.php for a php test and
http://something.bcc.de/t2.php for the problem...

------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=5444&edit=1

Reply via email to