<?php
include_once('util.class.php');

class 
db{
    private 
$host 'localhost';
    private 
$user 'tester';
    private 
$pass 'testeruser';
    private 
$db 'tester';
    
    private 
$query_log = array();
    
    private 
$connection false;
    
    public function 
__construct(){
        if (
$connection mysql_connect($this->host$this->user$this->pass) == false){
            die(
'could not connect to mysql server');
        } else if (
mysql_select_db($this->db) == false){
            die(
'could not select mysql database');
        }
    }
    
    public function 
raw_query($query){
        
$start_time time()+microtime();
        
$data mysql_query($query);
        
$log = array();
        
$log['time'] = time()+microtime() - $start_time;
        
$log['query'] = $query;
        if (
$log['error_no'] = mysql_errno() != 0)
            
$log['error'] = mysql_error();
        else
            
$log['error'] = '';
        
$log['affected'] = mysql_affected_rows();
        
$log['trace'] = debug_backtrace();
        
$this->query_log[] = $log;
        return 
$data;
    }
    
    public function 
sql_select($table$where NULL$fields '*'){
        
$query 'SELECT '.$fields.' FROM '.$table;
        if (!empty(
$where))
            
$query .= ' WHERE '.$where;
        return 
$this->raw_query($query);
    }
    
    public function 
get_log(){
        return 
$this->query_log;
    }
    
    public function 
print_log(){
        
?><div style="clear:both"><table border="2"><tr><td>time</td><td>query</td><td>affected</td><td>trace</td></tr><?
        
foreach($this->query_log as $val){
            print(
'<tr><td>'.$val['time'].'</td><td>'.$val['query']);
            if (
$val['error_no'] != 0)
                print(
'<br /><strong>Error: '.$val['error_no'].' -- '.$val['error'].'</strong>');
            print(
'</td><td>'.$val['affected'].'</td><td>'.util::str_backtrace($val['trace']).'</td></tr>');
        }
        
?></table></div><?
    
}
}
$db = new db();
?>