This discussion is archived
1 Reply Latest reply: May 2, 2013 6:41 AM by 1006287 RSS

Different results from PHP and Oracle developer

1006287 Newbie
Currently Being Moderated
Good morning,

I'm seeing a problem that until now could not solve ... I aim to develop a php page that contains information from a oracle query . 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\">\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);

---------------------------

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

Oracle Developer result:
[Link for image|http://i.stack.imgur.com/HNd7i.png]

PHP result:
"No data found"
  • 1. Re: Different results from PHP and Oracle developer
    1006287 Newbie
    Currently Being Moderated
    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');

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points