Some very old PHP code originally intended to become an image management tool.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

226 lines
4.4 KiB

<?php
require_once LIBDIR . 'errException.php';
class mysqlQueryException extends errException
{
private $query;
function __construct ($msg, $no, $file, $line, $context, $query)
{
parent::__construct ($msg, $no, $file, $line, $context);
$this->query = $query;
}
function __toString ()
{
$retStr = "Fehler in Query: \n";
$retStr .= $this->query . "\n\n";
$retStr .= $this->message . "\n\n";
$retStr .= 'Datei: ' . $this->file . "\n";
$retStr .= 'Zeile: ' . $this->line . "\n\n";
if ($this->errContext != NULL)
{
$retStr .= "Fehler Context: \n";
$retStr .= print_r ($this->errContext, TRUE) . "\n";
}
$retStr .= "Aufruf Stack: \n";
$retStr .= $this->getTraceAsString () . "\n";
return $retStr;
}
}
/***
* This class depends on errException.php, as it does not handle any
* error at all, except it catches exceptions.
*/
class c_mysqlDb
{
private $connectRes;
private $host;
private $user;
private $pass;
private $database;
private $result = array ();
private $resCount = 0;
private function getAllData ($resId, $method, $class = NULL, $parm = NULL)
{
$ret = array ();
if (isset ($this->result[$resId]) && $this->result[$resId] != FALSE)
{
try
{
mysql_data_seek ($this->result[$resId], 0);
}
catch (Exception $e)
{
if ($e->getCode () != 2)
throw ($e);
// wenn der Fehlercode gleich 2 ist war das resultset nur leer
// und ich mache weiter.
}
if ($class === NULL)
$row = $method ($this->result[$resId]);
else
$row = $method ($this->result[$resId], $class, $parm);
while ($row != FALSE)
{
$ret[] = $row;
if ($class === NULL)
$row = $method ($this->result[$resId]);
else
$row = $method ($this->result[$resId], $class, $parm);
}
}
return $ret;
}
function __construct ($host, $user, $pass, $db)
{
/* init member */
$this->host = $host;
$this->user = $user;
$this->pass = $pass;
$this->database = $db;
/* connect and select db */
$this->connectRes = mysql_pconnect (
$this->host,
$this->user,
$this->pass);
mysql_select_db ($this->database);
mysql_query ('set character set utf8');
}
function __destruct ()
{
/* close connection */
mysql_close ($this->connectRes);
}
function query ($query)
{
try
{
for ($i = 0; $i < $this->resCount; $i++)
if (! isset ($this->result[$i]))
break;
if ($i == $this->resCount)
$i = $this->resCount = $this->resCount + 1;
$this->result[$i] = mysql_query ($query);
if ($this->result[$i] === FALSE)
throw new Exception (mysql_error (), mysql_errno ());
return $i;
}
catch (errException $e)
{
throw new mysqlQueryException (
$e->getMessage (),
$e->getCode (),
$e->getFile (),
$e->getLine (),
$e->getErrContext (),
$query);
}
catch (Exception $e)
{
throw new mysqlQueryException (
$e->getMessage (),
$e->getCode (),
$e->getFile (),
$e->getLine (),
NULL,
$query);
}
}
function freeResult ($resId)
{
if (is_resource ($this->result[$resId]))
mysql_free_result ($this->result[$resId]);
unset ($this->result[$resId]);
}
function resetResult ($resId)
{
mysql_data_seek ($this->result[$resId], 0);
}
function getResult ($resId)
{
return $this->result[$resId];
}
function getAssoc ($resId)
{
return $this->getAllData ($resId, 'mysql_fetch_assoc');
}
function getArray ($resId)
{
return $this->getAllData ($resId, 'mysql_fetch_row');
}
function getObject ($resId, $class, $parm = NULL)
{
return $this->getAllData ($resId, 'mysql_fetch_object', $class, $parm);
}
function rows ($resId)
{
return mysql_num_rows ($this->result[$resId]);
}
function get ($resId, $row, $col)
{
if ($row > mysql_num_rows ($this->result[$resId]))
return NULL;
mysql_data_seek ($this->result[$resId], $row);
if (is_int ($col) && $col > mysql_num_fields ($this->result[$resId]))
return NULL;
if (is_string ($col))
{
$rowData = mysql_fetch_assoc ($this->result[$resId]);
if (! array_key_exists ($col, $rowData))
return NULL;
}
return mysql_result ($this->result[$resId], $row, $col);
}
// === einige nuetzlich Sachen ========================================
function setLocale ($locale)
{
$resId = $this->query ('set @LANG=\'' . $locale . '\'');
$this->freeResult ($resId);
}
};
/* quote string (und pack ' herum) */
function quoteS ($var)
{
if ($var === NULL)
return 'NULL';
return "'" . addslashes ($var) . "'";
}
?>