<?php
/** 
* Class DB 
* 
数据库操作类 
*/  
class DB {  
/** 
* @var 
* @return CDB 
*/  
private static $db;  
/**获取CDb类 
* @param $table_name 表名称 
* @param string $db_setting 调用数据库配置项 
* @param array $db_config 数据库配置 
* @return CDb 
*/  
public static function cdb($table_name='',$db_setting='default',$db_config=array()){  
if(!isset(self::$db)){  
$db = new CDb($table_name,$db_setting,$db_config);  
self::$db=$db;  
}else{  
$db=self::$db;  
}  
return $db;  
}  
/** 配置 
* @param $table_name 表名称 
* @param string $db_setting 调用数据库配置项 
* @param array $db_config 数据库配置 
* @return CDb 
*/  
public static function init($table_name='',$db_setting='default',$db_config=array()) {  
return self::cdb($table_name,$db_setting,$db_config);  
}  
/** 
* 执行删除记录操作 
* @param $table 表名称 
* @param $condition 删除数据条件,不充许为空。可以为数组 
* @return boolean 
*/  
public static function delete($table, $condition) {  
$db=self::cdb();  
$db->setTableName($table);  
return $db->delete($condition);  
}  
/** 
* 执行添加记录操作 
* @param $table 表名称 
* @param array $data要增加的数据,参数为数组。数组key为字段值,数组值为数据取值 
* @param bool $return_insert_id 是否返回新建ID号 
* @param bool $replace 是否采用 replace into的方式添加数据 
* @return boolean 
*/  
public static function insert($table, $data, $return_insert_id = false, $replace = false) {  
$db=self::cdb();  
$db->setTableName($table);  
return $db->insert($data, $return_insert_id, $replace);  
}  
/** 
* 获取最后一次添加记录的主键号 
* @return int 
*/  
public static function insertID() {  
$db=self::cdb();  
return $db->insert_id();  
}  
/** 
* 执行更新记录操作 
* @param $table 表名称 
* @param $data  要更新的数据内容,参数为数组 
* 为数组时数组key为字段值,数组值为数据取值 
* 为数组时[例: array('name'=>'lanmps','password'=>'123456')] 
* 数组的另一种使用array('name'=>'+=1', 'base'=>'-=1');程序会自动解析为`name` = `name` + 1, `base` = `base` - 1 
* 字符串,请按照格式 : 
* 字符串 [例2:array('catid=:catid AND time>=:time ',array(':catid'=>10,':time'=>'2012-02-10')) ] 
* @param $where 更新数据时的条件, 
* 字符串,请按照格式 : 
* 字符串 [例1:" id=1 and time>$time " ] 
* 字符串 [例2:array('catid=:catid AND time>=:time ',array(':catid'=>10,':time'=>'2012-02-10')) ] 
* 数组时 [例: array('name'=>'lanmps','password'=>'123456')] 
* @return boolean 
*/ www.jb200.com 
public static function update($table, $data, $where) {  
$db=self::cdb();  
$db->setTableName($table);  
return $db->update($data,$where);  
}  
/** 
* 获取单条记录查询 
* @param array $sql 查询条件语句 
* @return array/null数据查询结果集,如果不存在,则返回空 
*/  
public static function fetchFirst($sql) {  
$db=self::cdb();  
return $db->fetch($sql);  
}  
/** 
* 执行sql查询 
* @param $sql查询条件 
* @return array 查询结果集数组 
*/  
public static function fetchAll($sql) {  
$db=self::cdb();  
return $db->fetchAll($sql);  
}  
/** 
* 直接执行sql查询 
* @param $sql  查询
sql语句 
* @return 
*/  
public static function query($sql) {  
$db=self::cdb();  
return $db->exec($sql);  
}  
/** 
* 执行sql查询 
* @param $table 表名称 
* @param $where 查询条件 
* 字符串,请按照格式 : 
* 字符串 [例1:" id=1 and time>$time " ] 
* 字符串 [例2:array('catid=:catid AND time>=:time ',array(':catid'=>10,':time'=>'2012-02-10')) ] 
* 数组时 [例: array('name'=>'lanmps','password'=>'123456')] 
* @param $fields需要查询的字段值[例`name`,`gender`,`birthday`] 
* @param $limit 返回结果范围[例:10或10,10 默认为空] 
* @param $order 排序方式 [默认按数据库默认方式排序] 
* @param $group 分组方式 [默认为空] 
* @return array 查询结果集数组 
*/  
public static function select($table,$where = '', $fields = '*', $limit = '', $order = '', $group = '') {  
$db=self::cdb();  
$db->setTableName($table);  
return $db->select($where , $fields , $limit, $order , $group);  
}  
/** 
* 获取单条记录查询 
* @param $table 表名称 
* @param array $where查询条件语句 
* 字符串,请按照格式 : 
* 字符串 [例2:array('catid=:catid AND time>=:time ',array(':catid'=>10,':time'=>'2012-02-10')) ] 
* 数组时 [例: array('name'=>'lanmps','password'=>'123456')] 
* @param string $fields 需要查询的字段值[例`name`,`gender`,`birthday`] 
* @param string $order  排序方式 [默认按数据库默认方式排序] 
* @param string $group  分组方式 [默认为空] 
* @return array/null数据查询结果集,如果不存在,则返回空 
*/  
public static function getOne($table,$where,$fields = '*', $order = '', $group = '') {  
$db=self::cdb();  
$db->setTableName($table);  
return $db->get_one($where , $fields,$order, $group);  
}  
/** 
* 查询多条数据并
分页 
* @param $table 表名称 
* @param $where 查询条件 
* 字符串,请按照格式 : 
* 字符串 [例1:" id=1 and time>$time " ] 
* 字符串 [例2:array('catid=:catid AND time>=:time ',array(':catid'=>10,':time'=>'2012-02-10')) ] 
* 数组时 [例: array('name'=>'lanmps','password'=>'123456')] 
* @param $fields字段 *,id 
* @param $order 排序 id desc ,orderlist asc 
* @param $page  页码 1 
* @param $pagesize  每页条数 
* @return array('data'=>数据,'count'=>记录总数) 
*/  
public static function listInfo($table,$where = '',$fields='*', $order = '', $page = 1, $pagesize = 20) {  
$db=self::cdb();  
$db->setTableName($table);  
$d=$db->listinfo($where,$fields, $order, $page, $pagesize);  
return array('data'=>$d,'count'=>self::$db->number);  
}  
/**第一个参数值 
* @param $sql 
* @return mixed 
*/  
public static function resultFirst($sql){  
$db=self::cdb();  
return $db->resultFirst($sql);  
}  
}