-3

我看到了一个直到现在都无法解决的问题......

我的目标是开发一个 php 页面,其中包含来自查询 PL/SQL 的信息。我设法建立连接并进行阅读......但是当我将来自 PHP 的结果与 Oracle Developer(安装在我的计算机上)的结果进行比较时,我发现这不一样...... 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 developer 中测试了查询是完全一样的......正如我所说,返回不同的结果: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结果:

没有找到数据

谢谢

4

1 回答 1

1

下午好,

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

好吧,经过一次重大审查发现,在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');
于 2013-05-02T13:38:05.357 回答