如何在PHP中将Oracle sql查询结果存储在多维数组中

时间:2013-05-24 15:41:44

标签: php sql arrays

我有一个PHP脚本来从Oracle SQL中获取数据。我需要在HTML代码中包含fetch语句。基本上我想在PHP标签中处理所有PHP相关和数据库相关的查询,并且在需要的地方,我可以从数组中获取结果,而不是再次包括oci_fetch()和oci_result语句。

e..g,

<?php
/* Database Connection*/

if(!$dbConn = oci_connect('WHSUSR','goldeneyex','MyServer.biz:1530/OSLTP')){
    $err = oci_error();
    trigger_error('Could not establish a connection: ' . $err['message'], E_USER_ERROR);
};

/* Query to get Users last accessed appication */
$strSQLUserLogInDetails = "select v.user_name,  max(start_time) from sessiont s inner join V_BO_USER_CODES v on v.user_obj_id = s.user_id
                                    where v.user_name not in ('KALIDO MDM Anonymous User', 'KALIDO MDM Publication Service User')
                            group by v.user_name
                            order by 2 desc";

$stmtUserLogInDetails = oci_parse($dbConn,$strSQLUserLogInDetails);
if ( ! oci_execute($stmtUserLogInDetails) ){
    $err = oci_error($stmtUserLogInDetails);
    trigger_error('Query failed: ' . $err['message'], E_USER_ERROR);
};
?>

以及下面的HTML代码......

<table class="table table-striped" title="List of Users who last accessed Kalido application">
    <thead><tr><th>User Name</th><th>Last Accessed On</th></tr></thead>
    <tbody>                     
        <?php
            while(oci_fetch($stmtUserLogInDetails)){
                $uname = oci_result($stmtUserLogInDetails, 1);
                $datetime = oci_result($stmtUserLogInDetails, 2);
                print "<tr><td><a href='userlevelreport.php?uname=".$uname."'>" .$uname. "</a></td><td>".$datetime."</td></tr>";
            }
        ?>
    </tbody>
</table>

2 个答案:

答案 0 :(得分:1)

使用功能oci-fetch-array

在该链接上,您有一些示例如何使用它。

在您的特定情况下:

...

$rows = array();
if ( ! oci_execute($stmtUserLogInDetails) ){
    $err = oci_error($stmtUserLogInDetails);
    trigger_error('Query failed: ' . $err['message'], E_USER_ERROR);
}
else
{
    while ($row = oci_fetch_array($stid, OCI_ASSOC)) {
        $rows[] = $row; 
    }
}

$ rows将包含一个包含结果的数组。

答案 1 :(得分:0)

您可以使用此功能:

oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)