数据库操作类
数据库操作类
数据库操作类
<?php
class DB
{
public $queryNum = 0; // 执行SQL语句的次数
public $link; // MySQL连接标识
public $dbPrefix; //表前缀
/**
* 缓存实例
*
* @var objeact
* @access protected
*/
public $cache;
public $is_cache = false;
public function __construct($dbhost, $dbuser, $dbpw, $dbname = '', $charset = 'utf_8', $dbPrefix = '')
{
$this->link = mysql_connect ( $dbhost, $dbuser, $dbpw, true );
$this->dbPrefix = $dbPrefix;
if ($this->link) {
mysql_select_db ( $dbname, $this->link );
$charset = str_replace ( '_', '', $charset );
mysql_query ( "SET NAMES '$charset'", $this->link );
} else {
$this->throwException ( 'MySQL server error report!' );
}
}
/**
* @todo 执行SQL语句
* @param string $sql
* @param array $args
*/
public function query($sql)
{
$rs = mysql_query($sql, $this->link);
if ($rs) {
$this->queryNum++;
$this->numRows = mysql_affected_rows($this->link);
$this->debug($sql);
return $rs;
} else {
$this->debug($sql, false, $this->getError());
$this->success = false;
return false;
}
}
/**
* 返回结果集的数组形式
* @return array
*/
function fetch_array($rs, $result_type = MYSQL_ASSOC)
{
return mysql_fetch_array ( $rs, $result_type );
}
// * 返回结果集的数组形式row
public function fetch_row($rs)
{
return mysql_fetch_row ($rs);
}
/**
* 执行一条SQL语句返回是否成功
* @param string $sql SQL语句
* @return boolean
*/
public function execute($sql)
{
if (mysql_query($sql, $this->link)) {
$this->queryNum++;
$this->numRows = mysql_affected_rows($this->link);
$this->debug($sql);
return true;
} else {
$this->debug($sql, false, $this->getError());
$this->success = false;
return false;
}
}
/**
* 得到结果集的第一个数据
* @param string $sql SQL语句
* @return mixed
*/
public function getOne($sql)
{
if (!$rs = $this->query($sql)) {
return false;
}
$row = $this->fetch($rs);
$this->free($rs);
return is_array($row) ? array_shift($row) : $row;
}
/**
* 返回结果集的一行
* @param string $sql SQL语句
* @return mixed
*/
public function getRow($sql)
{
if (!$rs = $this->query($sql)) {
return false;
}
$row = $this->fetch($rs);
$this->free($rs);
return $row;
}
/**
* 返回所有结果集
* @param string $sql SQL语句
* @param string $limit SQL语句的LIMIT限制
* @return mixed
*/
public function getAll($sql)
{
if (!$rs = $this->query($sql)) {
return false;
}
$all_rows = array();
while ($rows = $this->fetch($rs)) {
$all_rows[] = $rows;
}
$this->free($rs);
return $all_rows;
}
/**
* 取所有行的第一个字段信息
* @param string $sql SQL语句
* @return array
* @access public
*/
public function getCol($sql)
{
$res = $this->query($sql);
if ($res !== false) {
$arr = array();
while ($row = mysql_fetch_row($res)) {
$arr[] = $row[0];
}
return $arr;
} else {
return false;
}
}
/**
* 执行INSERT命令.返回AUTO_INCREMENT
* 返回0为没有插入成功
* @param string $sql SQL语句
* @return integer
*/
public function insert($sql)
{
$this->execute($sql);
return mysql_insert_id($this->link);
}
public function insert_id()
{
return mysql_insert_id ( $this->link );
}
/**
* insert update For Mysql
* @param <type> $table
* @param <type> $field_values
* @param <type> $mode
* @param <type> $where
* @return <type>
*/
public function autoExecute($table, $field_values, $mode = 'INSERT', $where = '')
{
$field_names = $this->getCol('DESC ' . $table);
$sql = '';
if ($mode == 'INSERT') {
$fields = $values = array();
foreach ($field_names AS $value) {
if (array_key_exists($value, $field_values) == true) {
$fields[] = '`' . $value . '`';
$values[] = "'" . $field_values[$value] . "'";
}
}
if (!empty($fields)) {
$sql = 'INSERT INTO ' . $table . ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')';
}
} else {
$sets = array();
foreach ($field_names AS $value) {
if (array_key_exists($value, $field_values) == true) {
$sets[] = '`' . $value . "` = '" . $field_values[$value] . "'";
}
}
if (!empty($sets)) {
$sql = 'UPDATE ' . $table . ' SET ' . implode(', ', $sets) . ' WHERE ' . $where;
}
}
if ($sql) {
return $this->query($sql);
} else {
return false;
}
}
/**
* 释放结果集
* @param resource $rs 结果集
* @return boolean
*/
public function free($rs)
{
return mysql_free_result ( $rs );
}
public function fetch($rs)
{
return mysql_fetch_array($rs);
}
/**
* 关闭数据库
*
* @access public
* @return boolean
*/
public function close()
{
return mysql_close ( $this->link );
}
/**
* 获取执行SQL语句的个数
* @access public
* @return integer
*/
public function getQueryNum()
{
return $this->queryNum;
}
/**
* 获取错误信息
* @return void
* @access public
*/
public function getError()
{
echo mysql_errno ( $this->link ) . " : " . mysql_error ( $this->link );
}
/**
* 抛出一个异常信息
* @param string $message 异常信息
* @return void
*/
protected function throwException($message)
{
throw new Exception ( $message );
}
/**
* DEBUG信息
*
* @param string $sql
* @param bool $success
* @param error string
*/
public function debug($sql, $success = true, $error = null)
{
global $TmacConfig;
if ($TmacConfig['Common']['debug']) {
$debug = Debug::getInstance();
$debug->setSQL($sql, $success, $error);
}
}
}
精彩图集
精彩文章






