中易网

在php环境中,从oracle中获取数据如何提取具体值?

答案:2  悬赏:40  
解决时间 2021-04-08 14:03
这样显示的数据正常,是按行显示。
$nrows = oci_fetch_all($stmt, $results);
echo "\n";
for ($i = 0; $i < $nrows; $i++) {
echo "\n";
foreach ($results as $data) {
echo "\n";
}
echo "\n";
}
echo "
$data[$i]
\n";

输入到html的模版
{loop $results $data}

{$data[1]}
{$data[2]}
{$data[3]}
{$data[4]}
{$data[5]}

{/loop}
就变成按列显示了,原因在哪里?data[1]中的每个变量如何提取?
最佳答案
连接   以上代码使用TNSNAME(在你的tnsnames.ora文件中指明)定义的Oracle数据库名称、用户名称和密码连接数据库。在成功连接的基础上,ora_logon函数返回一个非零的连接ID并储存在变量$conn中。   查询   假设与数据库已经连接就绪,下面我们就来实际的应用对数据库的查询。下面的代码演示了一个连接并查询的典型例子: function printoraerr($in_cur) { // 检查Oracle是否出错 // 如果存在错误则显示 // 当指针被激活时每次请求Oracle后调用该函数 if(ora_errorcode($in_cur)) echo "Oracle code - ".ora_error($in_cur)."\n"; return; } if (!($conn=ora_logon("user@TNSNAME","password"))) {echo "Connection to database failed\n"; exit; } echo "Connected as connection - $conn \n"; echo "Opening cursor ... \n"; $cursor=ora_open($conn); printoraerr($cursor); echo "Opened cursor - $cursor \n"; $qry="select user,sysdate from dual"; echo "Parsing the query $qry ... \n"; ora_parse($cursor,$qry,0); printoraerr($cursor); echo "Query parsed \n"; echo "Executing cursor ... \n"; ora_exec($cursor); printoraerr($cursor); echo "Executed cursor \n"; echo "Fetching cursor ... \n"; while(ora_fetch($cursor)) { $user=ora_getcolumn($cursor,0); printoraerr($cursor); $sysdate=ora_getcolumn($cursor,1); printoraerr($cursor); echo " row = $user, $sysdate \n"; } echo "Fetched all records \n"; echo "Closing cursor ... \n"; ora_close($cursor); echo "Closed cursor \n"; echo "Logging off from oracle... \n"; ora_logoff($conn); echo "Logged off from oracle \n"; ?>  显示结果  以下代码演示了怎样查询数据库并将结果输出: function printoraerr($in_cur, $conn) { // 检查Oracle是否出错 // 如果存在错误则显示 // 当指针被激活时每次请求Oracle后调用该函数 // If it encountered an error, we exit immediately if(ora_errorcode($in_cur)) {echo "Oracle code - ".ora_error($in_cur)." n"; ora_logoff($conn); exit; } return; } function exequery($w_qry,$conn) { $cursor=ora_open($conn); printoraerr($cursor,$conn); ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn); ora_exec($cursor); printoraerr($cursor,$conn); $numrows=0; $w_numcols=ora_numcols($cursor); // 显示头部 echo " \n"; for ($i=0;$i<$w_numcols;$i++) { $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"; echo "\t ".ora_columnname($cursor,$i)." \n"; } echo " \n"; while(ora_fetch($cursor)) { echo " \n"; for ($i=0;$i<$w_numcols;$i++) { $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"; if(ora_columntype($cursor,$i)=="LONG") echo " ". ora_getcolumn($cursor,$i)." \n"; else echo " ".ora_getcolumn($cursor,$i)." \n"; printoraerr($cursor,$conn); } $numrows++; echo " \n"; } if ($numrows==0) echo " Query returned no records \n"; else { echo " \n"; echo " Count \n"; echo " $numrows \n"; echo " \n"; } echo " \n"; ora_close($cursor); return; } // 主程序 if(!($conn=ora_logon("user@SID","password"))) { echo "Error: Cannot connect to database\n"; exit; } $qry="SELECt deptno \"Dept\" ,empno \"Emp\" ,empnm \"Name\" ,salary \"Salary\" FROM employee ORDER BY 1,2"; exequery($qry); ora_logoff($conn); ?>  基于HTTP的Oracle登录  将以下代码加在PHP页面代码之前以确认Oracle登录。注意你必须正确设定$ SID。 if(!isset($PHP_AUTH_USER)) { Header("WWW-authenticate: basic realm=\"$SID\""); Header("HTTP/1.0 401 Unauthorized"); $title="Login Instructions"; echo " You are not authorized to enter the site \n"; exit; } else { if (!($conn=ora_logon("$PHP_AUTH_USER@$SID",$PHP_AUTH_PW))) {Header("WWW-authenticate: basic realm=\"$SID\""); Header("HTTP/1.0 401 Unauthorized"); $title="Login Instructions"; echo " You are not authorised to enter the site \n"; exit; }} ?>
全部回答
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我剪适合什么发型好?不要烫,不用染的,飞机
经常听人说 萝卜不大长在背上 是什么意思啊
顾客有权利要求商家出示营业执照和卫生许可证
外地社保转入上海多久可以享受医保呢
跟一个人的武林同时上映的电影叫什么
有关七仙女的传说
换了新工作,和大家相处得还好,唯独主任,跟
求这部电影的名字,求出处!
一个老外洗澡时进来一只老虎,然后船上还有好
今日美食广场我想知道这个在什么地方
使用insert命令可在数据库中任意位置插入新记
1250KVA干式变压器功率因数0.95负载1800A一个
怎么样在车牌照上看出是私人车还是公家车
开发商拒不交房,我该怎么办?只有起诉吗?起诉
18-20刻苦练散打能成高手吗?
推荐资讯
肚子右边是什么器官?最近会痛
主要IDE通道设备0的设备类型无法修改
求解,这是猫和老鼠哪一集
为什么现在的女生不好追?
我是应用心理学专业的,打算18年考研,现在不
对于LOL和DNF。迅游加速器好点还是迅雷游戏加
国利汽修地址有知道的么?有点事想过去
凌宵牌1000瓦清水泵是单相异步电机吗?
木兰诗前三段原文
thinkpad t450小红帽怎么调灵敏度
东山下西坑小学在什么地方啊,我要过去处理事
电视遥控器的电池多久会流水
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?