【已解决】求助,PDO_OCI方式与ORACLE连接后,查询出来的VARCHAR2字段被截取

浏览:1422 发布日期:2015/01/19 分类:求助交流
求助,PDO_OCI方式与ORACLE连接后,查询出来的VARCHAR2字段被截取


TP版本,3.2.3
用SQLPLUS查出来的是SQL> select * from sex_dict;

SERIAL_NO SEX SEX_NAME     INPUT_CODE             INPUT_CODE_WB
---------- --- ------------ ------------------------ ------------------------
         2 1   男           N                        L
         1 0   未知         WZ                       FT
         3 2   女           N                        V
         4 9   未定         WD                       FP
但在程序中用相同的SQL语句查出来的是array (size=2)
  'total' => null
  'rows' => 
    array (size=4)
      0 => 
        array (size=6)
          'serial_no' => string '2' (length=1)
          'sex_code' => string '1' (length=1)
          'sex_name' => string '男' (length=3)
          'input_code' => string 'N' (length=1)
          'input_code_wb' => string 'L' (length=1)
          'numrow' => string '1' (length=1)
      1 => 
        array (size=6)
          'serial_no' => string '1' (length=1)
          'sex_code' => string '0' (length=1)
          'sex_name' => string '未' (length=3)
          'input_code' => string 'WZ' (length=2)
          'input_code_wb' => string 'FT' (length=2)
          'numrow' => string '2' (length=1)
      2 => 
        array (size=6)
          'serial_no' => string '3' (length=1)
          'sex_code' => string '2' (length=1)
          'sex_name' => string '女' (length=3)
          'input_code' => string 'N' (length=1)
          'input_code_wb' => string 'V' (length=1)
          'numrow' => string '3' (length=1)
      3 => 
        array (size=6)
          'serial_no' => string '4' (length=1)
          'sex_code' => string '9' (length=1)
          'sex_name' => string '未' (length=3)
          'input_code' => string 'WD' (length=2)
          'input_code_wb' => string 'FP' (length=2)
          'numrow' => string '4' (length=1)
sex_name字段被截断了,请使用过的兄弟指点一下,非常感谢



已经解决了,原来是字符集搞错了,解决方法如下:
连接Oracle的配置:<?php
return array(
    'CONFIG_DB_ORACLE' => array(
        
        'db_type' => 'oracle',
        'db_host' => '192.168.1.3',
        'db_name' => 'csk',
        'db_user' => '用户名',
        'db_pwd' => '密码',
        'db_port' => '1521',
        'db_prefix' => '',
        
        // 'db_charset' => 'utf8',
        'db_charset' => 'zhs16gbk'  //这地方要根据oracle的设定
    )
);
'db_charset' => 'zhs16gbk' //这地方要根据oracle的设定
在SQLPLUS中可用下行代码查看ORACLE的字符集select * from nls_database_parameters在你的项目中新增数组转换函数/**
 * 转换数组字符集
 * @param unknown $in_charset 源字符集
 * @param unknown $out_charset 目标字符集
 * @param unknown $arr 需要转换的数组
 */
function get_iconv_array($in_charset, $out_charset, $arr)
{
    return eval('return ' . iconv($in_charset, $out_charset, var_export($arr, true) . ';'));
}
程序中查到记录后需要做相关转换 $model = new SexDictModel();
        
        $map = array();        
        $order = '';
        $result = $model->get_list(1, 100, $map, $order);
        $result = get_iconv_array('gb2312', 'utf-8', $result);
        dump($result);
即可
最佳答案
评论() 相关
后面还有条评论,点击查看>>