1 Reply Latest reply: May 2, 2013 8:41 AM by 1006287 RSS

    Different results from PHP and Oracle developer

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