php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #25499 select * from tabname returns ebcdic data
Submitted: 2003-09-11 18:27 UTC Modified: 2003-09-12 15:15 UTC
From: mike dot mcsherry at ociofc dot usda dot gov Assigned:
Status: Not a bug Package: OCI8 related
PHP Version: 4.3.3 OS: Windows 2000
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: mike dot mcsherry at ociofc dot usda dot gov
New email:
PHP Version: OS:

 

 [2003-09-11 18:27 UTC] mike dot mcsherry at ociofc dot usda dot gov
Description:
------------
I'm using php/oci8/apache/oracle sqlplus client (version  8.1.7.0.0) from my pc to connect to an oracle data base (version 7.3.3.6.3) that lives on an IBM mainframe.  The data in the database is stored in ebcdic (oh boy!) i.e. the nls_characterset setting in the db nls_database_parameters view is set to WE8EBCDIC37C... When I run an OCIExecute to say, select * from emp and do an OCIFetch the data comes back in EBCDIC... when I OCIColumnName the column names come back in ascii..  I wrote a little routine to convert the data from EB->ASCII and the data then looks fine but I was hoping someone else like oracle's protocol adapter (or you:) would handle it..  Sqlplus works predictably as does perl on my pc.  Any ideas? 
Thanks
Mike McSherry (970)295-5196 (Colorado) 

Reproduce code:
---------------
<?php   
   $conn = OCILogon("rvis", "rvis25","KCT1"); 
   $stmt = OCIParse($conn,"select * from emp");
   $result = OCIExecute($stmt, OCI_DEFAULT);

   echo "<HTML><TABLE BORDER=1> ";
   $ncols = OCINumCols($stmt);
   echo "<TR>";
   echo "<TH> 0 </TH>";
   for ($i =1 ; $i <= $ncols; $i++)
   {
      $fld[$i-1] = OCIColumnName($stmt,$i) ;
      $x = $fld[$i-1];
      echo "<TH>".$x."</TH>";
   }
   echo "</TR>";
   while ($a=OCIFetch($stmt)) 
   {
     echo "<TR>"; 
     echo "<TD>".$a."</TD>";
     for ($i = 0; $i < $ncols; $i++)
     {
       $result = OCIResult($stmt, $fld[$i]);
       echo "<TD>".$fld[$i]." ".$result."</TD>";
     }
     echo "</TR>";
  }
  echo "</TABLE> </HTML>";
?>


Expected result:
----------------
0 EMPNO  ENAME SAL
1 EMPNO 2222 ENAME Bill SAL
1 EMPNO 3333 ENAME Jim  SAL
1 EMPNO 1111 ENAME Larry SAL

Actual result:
--------------
0  EMPNO ENAME SAL 
1 EMPNO ???? ENAME ‰?? SAL  
1 EMPNO ???? ENAME щ? SAL  
1 EMPNO ???? ENAME Ӂ??? SAL  

note... when I convert the variables that are returned
from the select from EB-> ASCII it looks like expected.


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2003-09-11 19:27 UTC] sniper@php.net
I made a quick search with google and run into this:
http://www.solusoft.com/download/win/rdbms/81/8172note.html

(search it for EBCDIC)

Maybe you should try and install the patch mentioned in the document?

 [2003-09-12 13:25 UTC] mike dot mcsherry at ociofc dot usda dot gov
That did the trick, Thanks!
 [2003-09-12 15:15 UTC] sniper@php.net
Not php bug then -> bogus.

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat May 11 05:01:30 2024 UTC