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

I'm seeing a problem that until now could not solve ...

I aim to develop a php page that contains information from a query PL / SQL. I managed to make the connection and do the reading ... however when I compare the results coming from the results of the PHP with Oracle Developer (installed on my computer) I see that are not the same ... The results of PHP come as a filter applied to it .. appear only a few.

What reason can be? Someone can help me?

The code is as follows:

$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\">
";
       print "<TR>
";
       while ( list( $key, $val ) = each( $results ) ) {
          print "<TH>$key</TH>
";
       }
       print "</TR>
";

       for ( $i = 0; $i < $nrows; $i++ ) {
          reset($results);
          print "<TR>
";
          while ( $column = each($results) ) {
             $data = $column['value'];
                print "<TD>$data[$i]</TD>
";
          }
          print "</TR>
";
       }
       print "</TABLE>
";
    } else {
       echo "No data found<BR>
";
    }
    echo "";
    OCILogoff($conexao);
}

I tested the query in php and oracle developer was exactly the same ... as I said, return different results: x

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')

Oracle result:

link for image

PHP result:

No data found

Thank you

Good afternoon,

I managed to solve the problem though .. I'll leave here my solution for future similar problems that someone may have.

Well after a major review found that in php character encoding was not equal to the database, ie, when the php would seek some textual content with special characters could not recognize and put different characters ... when checked if there was a set given name, found nothing ...

to solve this was enough to run the following query in Oracle developer to know the encoding of the database:

  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')

Having coding was enough to change the line in the PHP code where do I connect:

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