
/** |
* 作者:胡睿 |
* 日期:2012/07/21 |
* 电邮:hooray0905@foxmail.com |
*/ |
|
class HRDB{ |
protected $pdo; |
protected $res; |
protected $config; |
|
/*构造函数*/ |
function __construct($config){ |
$this->Config = $config; |
$this->connect(); |
} |
|
/*数据库连接*/ |
public function connect(){ |
$this->pdo = new PDO($this->Config['dsn'], $this->Config['name'], $this->Config['password']); |
$this->pdo->query('set names utf8;'); |
//把结果序列化成stdClass |
//$this->pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); |
//自己写代码捕获Exception |
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); |
} |
|
/*数据库关闭*/ |
public function close(){ |
$this->pdo = null; |
} |
|
public function query($sql){ |
$res = $this->pdo->query($sql); |
if($res){ |
$this->res = $res; |
} |
} |
public function exec($sql){ |
$res = $this->pdo->exec($sql); |
if($res){ |
$this->res = $res; |
} |
} |
public function fetchAll(){ |
return $this->res->fetchAll(); |
} |
public function fetch(){ |
return $this->res->fetch(); |
} |
public function fetchColumn(){ |
return $this->res->fetchColumn(); |
} |
public function lastInsertId(){ |
return $this->res->lastInsertId(); |
} |
|
/** |
* 参数说明 |
* int $debug 是否开启调试,开启则输出sql语句 |
* 0 不开启 |
* 1 开启 |
* 2 开启并终止程序 |
* int $mode 返回类型 |
* 0 返回多条记录 |
* 1 返回单条记录 |
* 2 返回行数 |
* string/array $table 数据库表,两种传值模式 |
* 普通模式: |
* 'tb_member, tb_money' |
* 数组模式: |
* array('tb_member', 'tb_money') |
* string/array $fields 需要查询的数据库字段,允许为空,默认为查找全部,两种传值模式 |
* 普通模式: |
* 'username, password' |
* 数组模式: |
* array('username', 'password') |
* string/array $sqlwhere 查询条件,允许为空,两种传值模式 |
* 普通模式: |
* 'and type = 1 and username like "%os%"' |
* 数组模式: |
* array('type = 1', 'username like "%os%"') |
* string $orderby 排序,默认为id倒序 |
*/ |
public function select($debug, $mode, $table, $fields="*", $sqlwhere="", $orderby="tbid desc"){ |
//参数处理 |
if(is_array($table)){ |
$table = implode(', ', $table); |
} |
if(is_array($fields)){ |
$fields = implode(', ', $fields); |
} |
if(is_array($sqlwhere)){ |
$sqlwhere = ' and '.implode(' and ', $sqlwhere); |
} |
//数据库操作 |
if($debug === 0){ |
if($mode === 2){ |
$this->query("select count(tbid) from $table where 1=1 $sqlwhere"); |
$return = $this->fetchColumn(); |
}else if($mode === 1){ |
$this->query("select $fields from $table where 1=1 $sqlwhere order by $orderby"); |
$return = $this->fetch(); |
}else{ |
$this->query("select $fields from $table where 1=1 $sqlwhere order by $orderby"); |
$return = $this->fetchAll(); |
} |
return $return; |
}else{ |
if($mode === 2){ |
echo "select count(tbid) from $table where 1=1 $sqlwhere"; |
}else if($mode === 1){ |
echo "select $fields from $table where 1=1 $sqlwhere order by $orderby"; |
} |
else{ |
echo "select $fields from $table where 1=1 $sqlwhere order by $orderby"; |
} |
if($debug === 2){ |
exit; |
} |
} |
} |
|
/** |
* 参数说明 |
* int $debug 是否开启调试,开启则输出sql语句 |
* 0 不开启 |
* 1 开启 |
* 2 开启并终止程序 |
* int $mode 返回类型 |
* 0 无返回信息 |
* 1 返回执行条目数 |
* 2 返回最后一次插入记录的id |
* string/array $table 数据库表,两种传值模式 |
* 普通模式: |
* 'tb_member, tb_money' |
* 数组模式: |
* array('tb_member', 'tb_money') |
* string/array $set 需要插入的字段及内容,两种传值模式 |
* 普通模式: |
* 'username = "test", type = 1, dt = now()' |
* 数组模式: |
* array('username = "test"', 'type = 1', 'dt = now()') |
*/ |
public function insert($debug, $mode, $table, $set){ |
//参数处理 |
if(is_array($table)){ |
$table = implode(', ', $table); |
} |
if(is_array($set)){ |
$set = implode(', ', $set); |
} |
//数据库操作 |
if($debug === 0){ |
if($mode === 2){ |
$this->query("insert into $table set $set"); |
$return = $this->lastInsertId(); |
}else if($mode === 1){ |
$this->exec("insert into $table set $set"); |
$return = $this->res; |
}else{ |
$this->query("insert into $table set $set"); |
$return = NULL; |
} |
return $return; |
}else{ |
echo "insert into $table set $set"; |
if($debug === 2){ |
exit; |
} |
} |
} |
|
/** |
* 参数说明 |
* int $debug 是否开启调试,开启则输出sql语句 |
* 0 不开启 |
* 1 开启 |
* 2 开启并终止程序 |
* int $mode 返回类型 |
* 0 无返回信息 |
* 1 返回执行条目数 |
* string $table 数据库表,两种传值模式 |
* 普通模式: |
* 'tb_member, tb_money' |
* 数组模式: |
* array('tb_member', 'tb_money') |
* string/array $set 需要更新的字段及内容,两种传值模式 |
* 普通模式: |
* 'username = "test", type = 1, dt = now()' |
* 数组模式: |
* array('username = "test"', 'type = 1', 'dt = now()') |
* string/array $sqlwhere 修改条件,允许为空,两种传值模式 |
* 普通模式: |
* 'and type = 1 and username like "%os%"' |
* 数组模式: |
* array('type = 1', 'username like "%os%"') |
*/ |
public function update($debug, $mode, $table, $set, $sqlwhere=""){ |
//参数处理 |
if(is_array($table)){ |
$table = implode(', ', $table); |
} |
if(is_array($set)){ |
$set = implode(', ', $set); |
} |
if(is_array($sqlwhere)){ |
$sqlwhere = ' and '.implode(' and ', $sqlwhere); |
} |
//数据库操作 |
if($debug === 0){ |
if($mode === 1){ |
$this->exec("update $table set $set where 1=1 $sqlwhere"); |
$return = $this->res; |
}else{ |
$this->query("update $table set $set where 1=1 $sqlwhere"); |
$return = NULL; |
} |
return $return; |
}else{ |
echo "update $table set $set where 1=1 $sqlwhere"; |
if($debug === 2){ |
exit; |
} |
} |
} |
|
/** |
* 参数说明 |
* int $debug 是否开启调试,开启则输出sql语句 |
* 0 不开启 |
* 1 开启 |
* 2 开启并终止程序 |
* int $mode 返回类型 |
* 0 无返回信息 |
* 1 返回执行条目数 |
* string $table 数据库表 |
* string/array $sqlwhere 删除条件,允许为空,两种传值模式 |
* 普通模式: |
* 'and type = 1 and username like "%os%"' |
* 数组模式: |
* array('type = 1', 'username like "%os%"') |
*/ |
public function delete($debug, $mode, $table, $sqlwhere=""){ |
//参数处理 |
if(is_array($sqlwhere)){ |
$sqlwhere = ' and '.implode(' and ', $sqlwhere); |
} |
//数据库操作 |
if($debug === 0){ |
if($mode === 1){ |
$this->exec("delete from $table where 1=1 $sqlwhere"); |
$return = $this->res; |
}else{ |
$this->query("delete from $table where 1=1 $sqlwhere"); |
$return = NULL; |
} |
return $return; |
}else{ |
echo "delete from $table where 1=1 $sqlwhere"; |
if($debug === 2){ |
exit; |
} |
} |
} |
} |



