<?
/*
Pork dbConnection object.
*/
class dbConnection
{
var $num_rows, $affected_rows, $connection, $timer, $exectime, $result, $lastquery, $error, $output, $limit, $username, $password, $database,$queries, $func, $host;
/**
constructor: read settings and connects.
*/
function __construct($settingsfile='./settings/dbsettings.php')
{
$this->queryCount = 0;
$this->readSettings($settingsfile);
$this->connect();
}
/*
Reads the settings file. It's supposed to have this format:
<\?
die();
dbtype = mysql
host = hostname:3306
username = your_user_name
password = your_password
database = your_database
func = mysql_fetch_object
?\>
*/
function readSettings($file)
{
$input = file_get_contents($file);
$file = explode("\n", $input );
for ($i=2; $i<sizeof($file) -1; $i++)
{
$property = explode ("=", $file[$i]);
$prop = trim($property[0]);
$this->$prop = trim($property[1]);
}
}
/**
* Connects to the database.
*/
function connect()
{
$this->connection = mysql_connect($this->host, $this->username, $this->password);
if ($this->connection)
{
mysql_select_db($this->database, $this->connection);
return true;
}
return false;
}
/**
* Zoekt finds the number of rows returned.
*/
function numrows()
{
return @mysql_num_rows($this->result);
}
/**
* Excecutes the query and processes:
* @ insert: MYSQL_INSERT_ID
* @ delete, replace, or update: MYSQL_AFFECTED_ROWS;
* @ select: MYSQL_NUM_ROWS
*/
function query($query)
{
$this->queries[]= $query;
$this->insertID = 0;
$this->lastQuery = $query;
if(!$this->connection && !$this->connect()) { return false; }
mysql_query("use {$this->database}", $this->connection);
$this->result = mysql_query($this->lastQuery, $this->connection);
$this->error = mysql_error($this->connection);
$query = strtolower($this->lastQuery);
if (empty($this->error))
{
$this->num_rows = 0;
$this->affected_rows = 0;
if (strpos($query, 'insert') !== false)
{
$this->insertID = mysql_insert_id($this->connection);
}
elseif (strpos($query, 'delete') !== false || strpos($query, 'replace') !== false || strpos($query, 'update') !== false)
{
$this->affected_rows = mysql_affected_rows($this->connection);
}
else
{
$this->num_rows = $this->numrows();
}
$this->queryCount++;
if (!empty($this->insertID)) { return ($this->insertID); }
}
else
{
print_r($this->error."<br>While executing query: <br><span style='color:green;'>{$query}</span>");
return false;
}
return true;
}
/**
Fetches a single result form the current result set or a passed query
*/
function fetchOne($query='')
{
if ($query != '') $okay = $this->query($query);
$this->output = ($okay && $this->num_rows > 0) ? mysql_result($this->result, 0) : false;
return($this->output);
}
/**
* Executes the passed query using $func and / or fetches a multi dimensional array of results.
*/
function fetchAll($query='', $func=false)
{
$output = array();
$okay = ($this->output != false);
$okay = ($query != '') ? $this->query($query) : $okay;
if ($okay)
{
$func = ($func != false) ? $func : $this->func;
while ($array = $func($this->result)) $output[] = $array;
$this->numrows = sizeof($output);
$this->output = $output;
}
return($output);
}
/**
* Executes the passed query using $func and / or fetches one row of results..
*/
function fetchRow($query='', $func=false)
{
$output = array();
$okay = ($this->output != false);
$okay = ($query != '') ? $this->query($query) : $okay;
if ($okay)
{
$func = ($func != false) ? $func : $this->func;
if ($array = $func($this->result)) $output = $array;
$this->output = $output;
}
return $output;
}
function getNumRows()
{
return ($this->num_rows);
}
function getAffectedRows()
{
return ($this->affected_rows);
}
function setPassword($val)
{
$this->password = $val;
}
function setUsername($val)
{
$this->username = $val;
}
function setHost($val)
{
$this->host = $val;
}
function setDatabase($val)
{
$this->database = $val;
if ($this->connection)
{
mysql_select_db($val, $this->connection);
}
}
function getError()
{
return($this->error);
}
function getLastQuery()
{
return($this->lastquery);
}
function __destruct()
{
mysql_close($this->connection);
}
}
?>
|