1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-30 21:40:43 +02:00

- dbal changes

git-svn-id: file:///svn/phpbb/trunk@5130 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Meik Sievertsen
2005-04-22 17:44:36 +00:00
parent f0d7d05888
commit d1f3349f7b
8 changed files with 1145 additions and 474 deletions

View File

@@ -387,9 +387,9 @@ class sql_db
if ($query_id)
{
if ($row < $this->num_rows[$query_id])
if ($rownum < $this->num_rows[$query_id])
{
$getrow = ($row == -1) ? $this->current_row[$query_id] - 1 : $row;
$getrow = ($rownum == -1) ? $this->current_row[$query_id] - 1 : $rownum;
return $this->result_rowset[$query_id][$getrow][$this->field_names[$query_id][$field]];
}
@@ -407,7 +407,7 @@ class sql_db
if (isset($this->current_row[$query_id]))
{
$this->current_row[$query_id] = $offset - 1;
$this->current_row[$query_id] = $rownum;
return true;
}
@@ -419,36 +419,6 @@ class sql_db
return ($this->next_id[$this->db_connect_id]) ? $this->next_id[$this->db_connect_id] : false;
}
function sql_numfields($query_id = false)
{
if (!$query_id)
{
$query_id = $this->query_result;
}
return ($query_id) ? sizeof($this->field_names[$query_id]) : false;
}
function sql_fieldname($offset, $query_id = false)
{
if (!$query_id)
{
$query_id = $this->query_result;
}
return ($query_id) ? $this->field_names[$query_id][$offset] : false;
}
function sql_fieldtype($offset, $query_id = false)
{
if (!$query_id)
{
$query_id = $this->query_result;
}
return ($query_id) ? $this->field_types[$query_id][$offset] : false;
}
function sql_freeresult($query_id = false)
{
if (!$query_id)
@@ -508,7 +478,7 @@ class sql_db
return;
}
global $db, $cache, $starttime, $phpbb_root_path;
global $cache, $starttime, $phpbb_root_path;
static $curtime, $query_hold, $html_hold;
static $sql_report = '';
static $cache_num_queries = 0;
@@ -525,7 +495,7 @@ class sql_db
{
$cache->unload();
}
$db->sql_close();
$this->sql_close();
$mtime = explode(' ', microtime());
$totaltime = $mtime[0] + $mtime[1] - $starttime;
@@ -534,7 +504,7 @@ class sql_db
echo 'th { background-image: url(\'' . $phpbb_root_path . 'adm/images/cellpic3.gif\') }' . "\n";
echo 'td.cat { background-image: url(\'' . $phpbb_root_path . 'adm/images/cellpic1.gif\') }' . "\n";
echo '</style><title>' . $msg_title . '</title></head><body>';
echo '<table width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td><a href="' . htmlspecialchars(preg_replace('/&explain=([^&]*)/', '', $_SERVER['REQUEST_URI'])) . '"><img src="' . $phpbb_root_path . 'adm/images/header_left.jpg" width="200" height="60" alt="phpBB Logo" title="phpBB Logo" border="0"/></a></td><td width="100%" background="' . $phpbb_root_path . 'adm/images/header_bg.jpg" height="60" align="right" nowrap="nowrap"><span class="maintitle">SQL Report</span> &nbsp; &nbsp; &nbsp;</td></tr></table><br clear="all"/><table width="95%" cellspacing="1" cellpadding="4" border="0" align="center"><tr><td height="40" align="center" valign="middle"><b>Page generated in ' . round($totaltime, 4) . " seconds with {$this->num_queries} queries" . (($cache_num_queries) ? " + $cache_num_queries " . (($cache_num_queries == 1) ? 'query' : 'queries') . ' returning data from cache' : '') . '</b></td></tr><tr><td align="center" nowrap="nowrap">Time spent on MSSQL queries: <b>' . round($this->sql_time, 5) . 's</b> | Time spent on PHP: <b>' . round($totaltime - $this->sql_time, 5) . 's</b></td></tr></table><table width="95%" cellspacing="1" cellpadding="4" border="0" align="center"><tr><td>';
echo '<table width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td><a href="' . htmlspecialchars(preg_replace('/&explain=([^&]*)/', '', $_SERVER['REQUEST_URI'])) . '"><img src="' . $phpbb_root_path . 'adm/images/header_left.jpg" width="200" height="60" alt="phpBB Logo" title="phpBB Logo" border="0"/></a></td><td width="100%" background="' . $phpbb_root_path . 'adm/images/header_bg.jpg" height="60" align="right" nowrap="nowrap"><span class="maintitle">SQL Report</span> &nbsp; &nbsp; &nbsp;</td></tr></table><br clear="all"/><table width="95%" cellspacing="1" cellpadding="4" border="0" align="center"><tr><td height="40" align="center" valign="middle"><b>Page generated in ' . round($totaltime, 4) . " seconds with {$this->num_queries} queries" . (($cache_num_queries) ? " + $cache_num_queries " . (($cache_num_queries == 1) ? 'query' : 'queries') . ' returning data from cache' : '') . '</b></td></tr><tr><td align="center" nowrap="nowrap">Time spent on MySQL queries: <b>' . round($this->sql_time, 5) . 's</b> | Time spent on PHP: <b>' . round($totaltime - $this->sql_time, 5) . 's</b></td></tr></table><table width="95%" cellspacing="1" cellpadding="4" border="0" align="center"><tr><td>';
echo $sql_report;
echo '</td></tr></table><br /></body></html>';
exit;
@@ -544,58 +514,6 @@ class sql_db
$query_hold = $query;
$html_hold = '';
$explain_query = $query;
if (preg_match('/UPDATE ([a-z0-9_]+).*?WHERE(.*)/s', $query, $m))
{
$explain_query = 'SELECT * FROM ' . $m[1] . ' WHERE ' . $m[2];
}
elseif (preg_match('/DELETE FROM ([a-z0-9_]+).*?WHERE(.*)/s', $query, $m))
{
$explain_query = 'SELECT * FROM ' . $m[1] . ' WHERE ' . $m[2];
}
if (preg_match('/^SELECT/', $explain_query))
{
$html_table = FALSE;
@odbc_exec($this->db_connect_id, 'SET SHOWPLAN_ALL ON');
if ($result = $this->_odbc_execute_query($explain_query))
{
while ($row = $this->sql_fetchrow($result))
{
if (!$html_table && sizeof($row))
{
$html_table = TRUE;
$html_hold .= '<table class="bg" width="100%" cellspacing="1" cellpadding="4" border="0" align="center"><tr>';
foreach (array_keys($row) as $val)
{
$html_hold .= '<th nowrap="nowrap">' . (($val) ? ucwords(str_replace('_', ' ', $val)) : '&nbsp;') . '</th>';
}
$html_hold .= '</tr>';
}
$html_hold .= '<tr>';
$class = 'row1';
foreach (array_values($row) as $val)
{
$class = ($class == 'row1') ? 'row2' : 'row1';
$html_hold .= '<td class="' . $class . '">' . (($val) ? $val : '&nbsp;') . '</td>';
}
$html_hold .= '</tr>';
}
$this->sql_freeresult($result);
}
@odbc_exec($this->db_connect_id, 'SET SHOWPLAN_ALL OFF');
if ($html_table)
{
$html_hold .= '</table>';
}
}
$curtime = explode(' ', microtime());
$curtime = $curtime[0] + $curtime[1];
break;
@@ -605,6 +523,7 @@ class sql_db
$endtime = $endtime[0] + $endtime[1];
$result = $this->_odbc_execute_query($query);
$splittime = explode(' ', microtime());
$splittime = $splittime[0] + $splittime[1];
@@ -619,7 +538,7 @@ class sql_db
// Pad the start time to not interfere with page timing
$starttime += $time_db;
$this->sql_freeresult($result);
@odbc_free_result($result);
$cache_num_queries++;
break;
@@ -640,7 +559,7 @@ class sql_db
else
{
$error = $this->sql_error();
$sql_report .= '<b style="color: red">FAILED</b> - MSSQL Error ' . $error['code'] . ': ' . htmlspecialchars($error['message']);
$sql_report .= '<b style="color: red">FAILED</b> - ' . SQL_LAYER . ' Error ' . $error['code'] . ': ' . htmlspecialchars($error['message']);
}
$sql_report .= '</p>';