Re: AW: AW: [PHP-DB] php, OCI and datatypes

From: Date: Thu, 14 Feb 2002 15:23:23 +0000
Subject: Re: AW: AW: [PHP-DB] php, OCI and datatypes
References: 1  Groups: php.db 
Request: Send a blank email to php-db+get-6616@lists.php.net to get a copy of this message
Ok, thanks all for the advices. The problem is linked with the NLS parameters. Here are my database related param: NLS_LANGUAGE=French NLS_TERRITORY=France NLS_DATE_LANGUAGE= french NLS_DATE_FORMAT = dd/mm/yyyy I change my query : select CHAR_COL ..... into select convert(CHAR_COL, 'US7ASCII').... and it works. It's not really nice but anyway it's a good first step. Thanks again Emmanuel Nectoux > > Is source and output from one try? because the number of rows doesn't match > > a problem could be the NLS-SETTINGS of your DB, > maybe they are set to a character set that uses > 2 Bytes per char. > > Or yust PHP has a problem to handle CHAR - columns. > maybe you can overcome that with some type conversions. > > Either try something like to_char () or substring () in SQL: > > select to_char (colname) //i#m not sure if that works > select substr (colname,1) // or zero, don't know if character counting > starts with 0 or 1 > > or > cast the result values : > > $col_1 = (string) ociresult($stmt, "CHAR_COL"); > > mk > > The "Hello" example (" H e l") comes from the sourcecode of > my browser. > What's strange is that the two browsers (Netscape 4.03Fr and > IE 5.0) have different source code for the same page. > > It do seems that each CHAR that I manage to fetch is coded > with two places (in IE). > > I tried the following code for example with the same result > > <?php > print "<HTML><HEAD><TITLE>Nice Title, isn't > it</TITLE></HEAD><BODY><PRE>\n"; > $conn = OCILogon("XXXXX", "YYYYY", "ZZZBASEZZZ"); > $stmt = OCIParse($conn, "select CHAR_COL, > OTHER_DATATYPE_COL from CODE_FICHIER"); > OCIExecute($stmt); > // I fetch the five first rows > for ($i = 0; $i < 5; $i++) { > ocifetch($stmt); > $col_1 = ociresult($stmt, "CHAR_COL"); > $col_2 = ociresult($stmt, "OTHER_DATATYPE_COL"); > echo("\"$col_1\"\t\"$col_2\"\t\n"); > } > > echo ("</PRE></BODY></HTML>"); > ?> > The html source is : > <HTML><HEAD><TITLE>le titre</TITLE></HEAD><BODY><PRE> > " " "308" > " A B C" "626" > " " "702" > " A A N" "1108" > " " "1109" > " 7 5 1" "1112" > "" "" > "" "" > </PRE></BODY></HTML> > > I will have a look at the HTTP header (Content-Language or > mime-type...), who knows.... >

« previous php.db (#6616) next »