我看到一个问题,直到现在还不能解决…
我的目标是开发一个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');