我看到一个直到现在都无法解决的问题......
我的目标是开发一个包含查询PL / SQL信息的php页面。 我设法建立连接并进行读取...但是当我将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开发人员完全一样......正如我所说,返回不同的结果: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')
Oracle结果:
PHP结果:
未找到数据
谢谢
答案 0 :(得分: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');