你在在函数外先建立一个相同类型的对象,用来接收此值 ,或是用传址引用的方式,如
function queryprocess($query,&$returnval) {//传址方式返回值
........
if(OCIFetch($cursor))
$returnval= $cursor;
else
$returnval= false;
}
//这样之后,你就可以先判断返回的 $returnval是否有值 ,,如果有的话,,就可以使用啦 。
function queryprocess($query,&$returnval) {//传址方式返回值
........
if(OCIFetch($cursor))
$returnval= $cursor;
else
$returnval= false;
}
//这样之后,你就可以先判断返回的 $returnval是否有值 ,,如果有的话,,就可以使用啦 。
由于ORCALE数据库我不太熟,所以我不知道和你程序里面$cursor对应的是什么类型的变量。。所以,你要看一下资料,看返回的是什么。。
如果用echo输出这个$cursor的话:Resource ID #‘数字’
我先试一下你所说的方法,谢谢了
class Database
{
Var $ORACLE_USER;
Var $ORACLE_PASSWORD;
Var $ORACLE_SID;
function Execute($strSQL)
{
global $debugstatus;
if($debugstatus=="on")
print "<font color=blue>debug> $strSQL<br></font>"; $conn = $this->OCIConnect();
$stmt=OCIParse($conn,$strSQL);
OCIExecute($stmt);
OCICommit($conn);
$this->OCIDisconnect($conn);
}
function GetFieldValue($stmt,$FieldName)
{
$retVal = "";
$nrows = OCIFetchStatement($stmt,$results);
if($nrows>0)
{
while ( list($key,$val) = each($results))
{
$arr[$key] = $val[0];
}
}
if (count($arr)>0)
{
$retVal=$arr[strtoupper($FieldName)];
}
OCIFreeStatement($stmt);
return $retVal;
} function GetMatrix($stmt)
{
$ncols=OCINumCols($stmt);
$column_name=array();
for($i=1;$i<=$ncols;$i++)
{
$column_name[$i-1]=OCIColumnName($stmt,$i);
}
$i=0;
$arr2=array();
while(OCIFetchInto($stmt,&$arr,OCI_RETURN_LOBS))
{
for($j=0;$j<$ncols;$j++)
{
$arr2[$column_name[$j]]=$arr[$j];
}
$matrix[$i]=$arr2;
$i++;
}
$this->EnumPointer=0;
OCIFreeStatement($stmt);
return $matrix;
} function OCIConnect()
{
return OCILogon($this->ORACLE_USER, $this->ORACLE_PASSWORD,$this->ORACLE_SID);
} function OCIDisconnect($conn)
{
OCILogoff($conn);
} function PrepareSQL($conn,$strSQL)
{
global $debugstatus;
if($debugstatus=="on")
print "<font color=blue>debug> $strSQL<br></font>";
$query = "ALTER SESSION SET NLS_DATE_FORMAT = 'MM/DD/YYYY HH12:MI AM'";
$stmt = OCIParse($conn, $query);
OCIExecute($stmt);
$stmt=OCIParse($conn,$strSQL);
OCIExecute($stmt);
return $stmt;
}
//GetATable and ExcuteSql is a test function
function GetATable($strTableName)
{
$conn = $this->OCIConnect("test","oracle");
$strSQL = "SELECT * FROM ".$strTableName;
$stmt=OCIParse($conn,$strSQL);
OCIExecute($stmt); $nrows = OCIFetchStatement($stmt,$results);
if ( $nrows > 0 )
{
print "<TABLE 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";
}
$this->OCIDisconnect($conn);
}
function DoSql($strSQL)
{
$strSQL = trim($strSQL);
$conn = $this->OCIConnect();
$stmt=OCIParse($conn,$strSQL);
OCIExecute($stmt); if(strtolower(substr($strSQL,0,6))!="select")
{
if(!OCIError($stmt))
print("<br>Excuted Success<br>");
else
print("<br>Excuted Not success<br>");
return;
}
$nrows = OCIFetchStatement($stmt,$results);
if ( $nrows > 0 )
{
print "<TABLE 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";
}
$this->OCIDisconnect($conn);
}
}function DisplaySQLResult($strSQL,$ORACLE_USER,$ORACLE_PASSWORD,$ORACLE_SID)
{
if($strSQL != "")
{
print("<br>Your SQL Statement:<br>$strSQL<BR>");
$atas = new Database;
$atas->ORACLE_USER=$ORACLE_USER;
$atas->ORACLE_PASSWORD=$ORACLE_PASSWORD;
$atas->ORACLE_SID=$ORACLE_SID;
$atas->DoSql($strSQL);
}
}
function DisplayWebexTable($strTableList)
{
if($strTableList=="")
DisplayAllTable();
$arrTableList = explode(",",$strTableList);
for($i=0;$i<sizeof($arrTableList);$i++)
DisplayTable($arrTableList[$i]);
}function DisplayAllTable()
{
$sql = "SELECT table_name FROM dba_table WHERE owner='TEST'";
$atas = new Database;
$atas->DoSql($sql);
}
}