aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/db/oracle.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/db/oracle.php')
-rw-r--r--phpBB/db/oracle.php64
1 files changed, 54 insertions, 10 deletions
diff --git a/phpBB/db/oracle.php b/phpBB/db/oracle.php
index 5c1c85fb84..443874c02e 100644
--- a/phpBB/db/oracle.php
+++ b/phpBB/db/oracle.php
@@ -31,6 +31,7 @@ class sql_db
var $query_result;
var $row;
var $num_queries = 0;
+ var $last_query = "";
//
// Constructor
@@ -90,6 +91,7 @@ class sql_db
unset($this->query_result);
if($query != "")
{
+ $this->last_query = $query;
$this->num_queries++;
if(eregi("LIMIT", $query))
@@ -121,6 +123,8 @@ class sql_db
{
unset($this->row[$this->query_result]);
unset($this->rowset[$this->query_result]);
+ $this->last_query_text[$this->query_result] = $query;
+
return $this->query_result;
}
else
@@ -220,7 +224,7 @@ class sql_db
return false;
}
}
- function sql_fetchrow($query_id = 0)
+ function sql_fetchrow($query_id = 0, $debug = FALSE)
{
if(!$query_id)
{
@@ -228,14 +232,29 @@ class sql_db
}
if($query_id)
{
+ $result_row = "";
+ $result = @OCIFetchInto($query_id, $result_row, OCI_ASSOC+OCI_RETURN_NULLS);
+ if($debug)
+ {
+ echo "Query was: ".$this->last_query . "<br>";
+ echo "Result: $result<br>";
+ echo "Query ID: $query_id<br>";
+ echo "<pre>";
+ var_dump($result_row);
+ echo "</pre>";
+ }
+ if($result_row == "")
+ {
+ return false;
+ }
- $result = @OCIFetchInto($query_id, &$this->row[$query_id], OCI_ASSOC);
- for($i = 0; $i < count($this->row[$query_id]); $i++)
+ for($i = 0; $i < count($result_row); $i++)
{
- list($key, $val) = each($this->row[$query_id]);
+ list($key, $val) = each($result_row);
$return_arr[strtolower($key)] = $val;
}
$this->row[$query_id] = $return_arr;
+
return $this->row[$query_id];
}
else
@@ -340,7 +359,7 @@ class sql_db
$query = "SELECT ".$tablename[2]."_id_seq.currval FROM DUAL";
$stmt = OCIParse($this->db_connect_id, $query);
OCIExecute($stmt);
- $temp_result = @OCIFetchInto($stmt, $temp_result, OCI_ASSOC);
+ $temp_result = @OCIFetchInto($stmt, $temp_result, OCI_ASSOC+OCI_RETURN_NULLS);
if($temp_result)
{
return $temp_result['CURRVAL'];
@@ -361,18 +380,43 @@ class sql_db
}
}
- function sql_nextid()
+ function sql_nextid($query_id = 0)
{
- if($this->db_connect_id)
+ if(!$query_id)
{
- //$result = @mysql_insert_id($this->db_connect_id);
- return false;
+ $query_id = $this->query_result;
}
- else
+ if($query_id && $this->last_query_text[$query_id] != "")
{
+ if( eregi("^(INSERT{1}|^INSERT INTO{1})[[:space:]][\"]?([a-zA-Z0-9\_\-]+)[\"]?", $this->last_query_text[$query_id], $tablename))
+ {
+ $query = "SELECT ".$tablename[2]."_id_seq.CURRVAL FROM DUAL";
+ $temp_q_id = @OCIParse($this->db_connect_id, $query);
+ @OCIExecute($temp_q_id);
+ @OCIFetchInto($temp_q_id, $temp_result, OCI_ASSOC+OCI_RETURN_NULLS);
+
+ if($temp_result)
+ {
+ return $temp_result['CURRVAL'];
+ }
+ else
+ {
+ return false;
+ }
+ }
+ else
+ {
return false;
+ }
}
+ else
+ {
+ return false;
}
+ }
+
+
+
function sql_freeresult($query_id = 0)
{
if(!$query_id)