|
Class cls_mysql{
var $querynum = 0;
var $link;
var $histories;
var $dbhost;
var $dbuser;
var $dbpw;
var $dbcharset;
var $pconnect;
var $tablepre;
var $time;
var $goneaway = 5;
Function Connect ($dbhost, $dbuser, $DBPW, $dbname = ', $dbcharset = ', $pconnect = 0, $tablepre = ', $time = 0) {
$this->dbhost = $dbhost;
$this->dbuser = $dbuser;
$this->DBPW = $DBPW;
$this->dbname = $dbname;
$this->dbcharset = $dbcharset;
$this->pconnect = $pconnect;
$this->tablepre = $tablepre;
$this->time = $time;
if ($pconnect) {
if (! $this->link = Mysql_pconnect ($dbhost, $dbuser, $DBPW)) {
$this->halt (' Can not connect to MySQL server ');
}
} else {
if (! $this->link = mysql_connect ($dbhost, $dbuser, $DBPW)) {
$this->halt (' Can not connect to MySQL server ');
}
}
if ($this->version () > ' 4.1 ') {
if ($dbcharset) {
mysql_query ("Set character_set_connection=". $dbcharset. ", character_set_results=". $dbcharset. ", character_set_ Client=binary ", $this->link);
}
if ($this->version () > ' 5.0.1 ') {
mysql_query ("Set sql_mode=" ", $this->link);
}
}
if ($dbname) {
mysql_select_db ($dbname, $this->link);
}
}
function Fetch_array ($query, $result _type = Mysql_assoc) {
Return mysql_fetch_array ($query, $result _type);
}
function Result_first ($sql) {
$query = $this->query ($sql);
return $this->result ($query, 0);
}
function Fetch_first ($sql) {
$query = $this->query ($sql);
return $this->fetch_array ($query);
}
function Fetch_all ($sql, $id = ' ") {
$arr = Array ();
$query = $this->query ($sql);
while ($data = $this->fetch_array ($query)) {
$id? $arr [$data [$id]] = $data: $arr [] = $data;
}
return $arr;
}
function cache_gc () {
$this->query ("delete from {$this->tablepre}sqlcaches where expiry< $this->time");
}
function query ($sql, $type = ', $cachetime = False) {
$func = $type = = ' unbuffered ' && @function_exists (' Mysql_unbuffered_query ')? ' Mysql_unbuffered_query ': ' mysql_query ';
if (!) ( $query = $func ($sql, $this->link)) && $type!= ' silent ') {
$this->halt (' MySQL query error ', $sql);
}
$this->querynum++;
$this->histories[] = $sql;
return $query;
}
function Affected_rows () {
Return Mysql_affected_rows ($this->link);
}
Function error () {
Return ($this->link) mysql_error ($this->link): Mysql_error ());
}
function errno () {
Return Intval ($this->link) Mysql_errno ($this->link): Mysql_errno ());
}
function result ($query, $row) {
$query = @mysql_result ($query, $row);
return $query;
}
function Num_rows ($query) {
$query = mysql_num_rows ($query);
return $query;
}
function Num_fields ($query) {
Return Mysql_num_fields ($query);
}
function Free_result ($query) {
Return Mysql_free_result ($query);
}
function insert_id () {
return ($id = mysql_insert_id ($this->link)) >= 0? $id: $this->result ($this->query ("Select last_insert_id ()"), 0);
}
function Fetch_row ($query) {
$query = Mysql_fetch_row ($query);
return $query;
}
function Fetch_fields ($query) {
Return Mysql_fetch_field ($query);
}
Function version () {
Return Mysql_get_server_info ($this->link);
}
function Close () {
Return Mysql_close ($this->link);
}
Function Halt ($message = ', $sql = ') {
$error = mysql_error ();
$errorno = Mysql_errno ();
if ($errorno = = 2006 && $this->goneaway--> 0) {
$this->connect ($this->dbhost, $this->dbuser, $this-> DBPW, $this->dbname, $this->dbcharset, $this->pconnect, $this->tablepre, $this->time);
$this->query ($sql);
} else {
$s = ' <b>error:</b> '. $error. ' <br/> ';
$s. = ' <b>errno:</b> '. $errorno. ' <br/> ';
$s. = ' <b>sql:</b>: '. $sql;
exit ($s);
}
}
}
|