免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2780 | 回复: 2
打印 上一主题 下一主题

php读取oracle数据 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-17 20:47 |只看该作者 |倒序浏览
getei.php的代码:

<?php
header('Content-Type:text/html;charset=UTF-8');
putenv("NLS_LANG=american_america.al32utf8");
if (!isset($_GET["id"]) || !isset($_GET["num"])) {
print "";
exit;
}
$id = urldecode($_GET["id"]);
$num = urldecode($_GET["num"]);
$arrayResult = "[";
require 'common.php';
// 组织架构列表
$orgCmdStr = "SELECT FNAME_L2,FSIMPLENAME AS FEMAIL FROM T_ORG_ADMIN WHERE FLONGNUMBER LIKE '" . $num . "%' ORDER BY FLONGNUMBER";
$orgParsed = ociparse($db_conn, $orgCmdStr);
ociexecute($orgParsed);
$nOrgRows = ocifetchstatement($orgParsed, $orgResults);
for($i = 0; $i < $nOrgRows; $i++) {
$arrayResult .= "\"" . $orgResults["FNAME_L2"][$i] . "<" . $orgResults["FEMAIL"][$i] . ">\"";
if ( $i != $nOrgRows-1) $arrayResult .= ",";
}
// 人员列表
$cmdstr = "SELECT T1.FNAME_L2
FROM T_BD_Person T1
INNER JOIN T_ORG_PositionMember T2 ON T1.FID = T2.FPersonID
INNER JOIN T_ORG_Position T3 ON T2.FPositionID = T3.FID
INNER JOIN T_ORG_Admin T4 ON T3.FAdminOrgUnitID = T4.FID
WHERE T4.FID = '" . $id . "'";
$parsed = ociparse($db_conn, $cmdstr);
ociexecute($parsed);
$nrows = ocifetchstatement($parsed, $results);
if ($nOrgRows > 0 && $nrows > 0) $arrayResult .= ",";
$ds=ldap_connect("192.168.0.5");
if ($ds) {
$r=ldap_bind($ds);
for($i = 0; $i < $nrows; $i++) {
  //$search_str = iconv("GB2312","UTF-8",$results["FNAME_L2"][$i]);  
  $sr=ldap_search($ds, "o=zkz", "cn=".$results["FNAME_L2"][$i]);
  $info = ldap_get_entries($ds, $sr);
  if ($info["count"]>0) {
   $arrayResult .= "\"" . $results["FNAME_L2"][$i] . "<" . $info[0]["mail"][0] . ">\"";
   if ( $i != $nrows-1) $arrayResult .= ",";
  }
}
}
ldap_close($ds);
ocilogoff($db_conn);
$arrayResult .= "]";
print $arrayResult;
?>

此页面是用来读取oracle的数据,返回是一个数组,数组中每个数据是 "人名<Email>",客户浏览器用javascript获取,然后解析后放到一个Select中。
之前在Windows下测试一点问题都没有,但移植到SUSE Linux下后,所有的中文人名全部变成了问号(?)。
后来在开头加上 putenv("NLS_LANG=american_america.al32utf8");
因为oracle的字符编码使用的就是这个。

但现在的问题是,有时显示出来是中文,有时则显示是问号(?)

请大家帮帮忙,我为此事已经忙了好几个星期了,实在没办法了。

论坛徽章:
0
2 [报告]
发表于 2007-09-18 00:16 |只看该作者
设置环境变量:
export NLS_LANG=american_america.al32utf8
可以放到apache的启动脚本 bin/apachectl 里面

论坛徽章:
0
3 [报告]
发表于 2007-09-18 00:19 |只看该作者
建议楼主看看oracle的变量绑定
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP