PHP和Oracle开发人员的结果不同


Different results from PHP and Oracle developer

我看到一个问题,直到现在还不能解决…

我的目标是开发一个php页面,其中包含来自查询PL/SQL的信息。我设法建立了联系,并阅读了……然而,当我比较来自PHP与Oracle开发人员(安装在我的计算机上)的结果时,我看到不一样…PHP的结果来自于应用于它的过滤器。只出现几个

是什么原因?有人能帮我吗?

代码如下:

$conexao = oci_connect($user,$pass,$db);
if (!$conexao) {
    echo "falha na conexão";
}
else{
    $query = "Select assignment,problem_status
            From MV_ZON_SERVICE_REQUEST
            where assignment in   ('Desenvolvimento Aplicacional SI -  Digitalização & Arquivo',    'Desenvolvimento Aplicacional SI - NB FILENET RESP',    'Desenvolvimento Aplicacional SI - NB SAP RESP',    'Desenvolvimento Aplicacional SI - Portais de Admin Corporativa',   'Desenvolvimento Aplicacional SI - SAP',    'Suporte Aplicacional SI 2ª linha - Digitalização & Arquivo',   'Suporte Aplicacional SI 2ª linha - Portais de Admin Corporativa',   'Suporte Aplicacional SI 2ª linha - SAP',  'Suporte Aplicacional SI 2ª linha - ZON Periódicos',  'Suporte Técnico SI - Digitalização & Arquivo',  'Suporte Técnico SI - Portais de Admin Corporativa',   'Suporte Técnico SI - SAP')
            and problem_status not in ('Closed','Resolved')";
    $stmt = oci_parse($conexao,$query);
    oci_execute($stmt);
    $nrows = oci_fetch_all($stmt,$results);
    if ( $nrows > 0 ) {
       print "<TABLE ID='"tablistagem'" BORDER='"1'">'n";
       print "<TR>'n";
       while ( list( $key, $val ) = each( $results ) ) {
          print "<TH>$key</TH>'n";
       }
       print "</TR>'n";
       for ( $i = 0; $i < $nrows; $i++ ) {
          reset($results);
          print "<TR>'n";
          while ( $column = each($results) ) {
             $data = $column['value'];
                print "<TD>$data[$i]</TD>'n";
          }
          print "</TR>'n";
       }
       print "</TABLE>'n";
    } else {
       echo "No data found<BR>'n";
    }
    echo "";
    OCILogoff($conexao);
}

我测试了查询在php和oracle开发人员是完全相同的…如我所说,返回不同的结果:x

查询:

Select assignment,problem_status
From MV_ZON_SERVICE_REQUEST
where assignment in   ('Desenvolvimento Aplicacional SI -  Digitalização & Arquivo',    'Desenvolvimento Aplicacional SI - NB FILENET RESP',    'Desenvolvimento Aplicacional SI - NB SAP RESP',    'Desenvolvimento Aplicacional SI - Portais de Admin Corporativa',   'Desenvolvimento Aplicacional SI - SAP',    'Suporte Aplicacional SI 2ª linha - Digitalização & Arquivo',   'Suporte Aplicacional SI 2ª linha - Portais de Admin Corporativa',   'Suporte Aplicacional SI 2ª linha - SAP',  'Suporte Aplicacional SI 2ª linha - ZON Periódicos',  'Suporte Técnico SI - Digitalização & Arquivo',  'Suporte Técnico SI - Portais de Admin Corporativa',   'Suporte Técnico SI - SAP')
and problem_status not in ('Closed','Resolved')

甲骨文的结果:

图片链接

PHP结果:

未找到数据

谢谢

下午好

我设法解决了这个问题。我将在这里留下我的解决方案,以便将来有人可能遇到类似的问题。

好了经过一次大的复查发现,在php中字符编码不等于数据库,即php在查找一些带有特殊字符的文本内容时无法识别而放上不同的字符…

要解决这个问题,只需在Oracle开发人员中运行以下查询即可知道数据库的编码:

  select DECODE(parameter, 'NLS_CHARACTERSET', 'CHARACTER SET',
'NLS_LANGUAGE', 'LANGUAGE',
'NLS_TERRITORY', 'TERRITORY') name,
value from v$nls_parameters
WHERE parameter IN ( 'NLS_CHARACTERSET', 'NLS_LANGUAGE', 'NLS_TERRITORY')

有代码足以改变PHP代码中的行,我在哪里连接:

$conexao = oci_connect($user,$pass,$db,'WE8MSWIN1252');