<?php
/**
* mySQL class
*
* @package db
* @subpackage mysql
*
*/
class DB {
private $db;
private $host;
private $user;
private $pass;
private $con;
private $database;
private $res;
private $row;
/**
* Number of current row
*
* @var int
*/
private $rowN = -1;
/**
* Connect to database
*
* @param resource link[optional] con
* @param string[optional] host
* @param string[optional] db
* @param string[optional] user
* @param string[optional] pass
* @return DB
*/
public function DB($con=NULL, $host=DBHOST, $db=DBDB, $user=DBUSER, $pass=DBPASS) {
if (!$con) {
$this->con = mysql_connect($host, $user, $pass);
$this->database = $this->selectDB($db);
if (!$this->database) {
$this->__destruct();
}
}
else {
$this->con = $con;
}
}
/**
* Select the database
*
* @param String database
* @return boolean
*/
public function selectDB($database) {
return mysql_selectdb($database, $this->con);
}
/**
* Execute a query
*
* @param string sql
* @param boolean[optional] insert
* @return Resource/Last_id
*/
public function query($sql, $insert=false) {
$this->rowN = -1;
$this->res = mysql_query($sql, $this->con);
if ($insert)
return mysql_insert_id($this->con);
return $this->res;
}
/**
* Get connection resource
*
* @return link resource
*/
public function getCon() {
return $this->con;
}
/**
* Gets a row
*
* @return array
*/
public function getRow() {
++$this->rowN;
$this->row = mysql_fetch_array($this->res);
return $this->row;
}
/**
* Gets a row in object format
*
* @param class class
* @param array[optional] params
* @return new object
*/
public function getRowAsObj($class, $params=NULL) {
++$this->rowN;
$this->row = mysql_fetch_object($this->res, $class, $params);
return $this->row;
}
/**
* Gets a row ASSOC
*
* @return array
*/
public function getRowAssoc() {
++$this->rowN;
$this->row = mysql_fetch_assoc($this->res);
return $this->row;
}
/**
* Get data from field
*
* @param string field
* @return string
*/
public function getField($field) {
return $this->row[$field];
}
/**
* Gets a result from a field in row
*
* @param string[optional] field
* @param int[optional] row
* @return string
*/
public function getResult($field="", $row=0) {
if ($field != "")
return mysql_result($this->res, $row, $field);
else return mysql_result($this->res, $row);
}
/**
* Return the name of idfield
*
* @return string
*/
public function getIdFieldName($table) {
$this->query("SHOW COLUMNS FROM $table");
return mysql_fieldname($this->res, 0);
}
/**
* Return the name of a field
*
* @param string table
* @param int fieldIndex
* @return string
*/
public function getFieldName($table, $fieldIndex) {
$this->query("SHOW COLUMNS FROM $table");
return mysql_fieldname($this->res, $fieldIndex);
}
/**
* Return the name of idfield
*
* @param string table
* @return array
*/
public function getFieldNameList($table) {
$this->query("SHOW COLUMNS FROM $table");
$fields = array();
$i = 0;
while (($field = $this->getRowAssoc())) {
foreach ($field as $type => $value) {
$fields[$i][strtolower($type)] = $value;
}
++$i;
}
return $fields;
}
/**
* Get the number of fields of a table
*
* @param string table
* @return int
*/
public function getNumFields($table) {
$this->query("SHOW COLUMNS FROM $table");
$i = 0;
while ($this->getRowAssoc())
++$i;
return $i;
}
/**
* Get insert id
*
* @return mysql_insert_id
*/
public function getInsertId() {
return mysql_insert_id($this->con);
}
/**
* Get max id
*
* @return last_id
*/
public function getMaxId($table) {
$idName = $this->getIdFieldName($table);
$sql = "SELECT MAX($idName) FROM $table";
$this->query($sql);
return $this->getResult();
}
/**
* Jumps to the next row
*
*/
public function seekForward() {
if (mysql_data_seek($this->res, $this->rowN+1))
++$this->rowN;
}
/**
* Jumps to the row
*
* @param int row
*/
public function seek($row) {
if (mysql_data_seek($this->res, $row))
$this->rowN = $row;
}
/**
* Jumps to the previous row
*
*/
public function seekBackward() {
if (mysql_data_seek($this->res, $this->rowN-1))
--$this->rowN;
}
/**
* Return n# of affected rows
*
* @return int
*/
public function getAffectedRows() {
return mysql_affected_rows($this->con);
}
/**
* Close the connection
*
*/
public function __destruct() {
@mysql_free_result($this->res);
@mysql_close($this->con);
}
}
?>
|