<?php
/* *
* 自动化数据表操作类
* @author 小蔡 <cyy0523xc@gmail.com>
* @version 1.0
*/
class cls_crud extends cls_database
{
/* *
* 数据表名
* @var string
*/
private $table = '';
/* *
* 构造函数
* @param array $config 配置变量
*/
public function __construct($config)
{
if(!emptyempty($config))
{
foreach($config as $cf => $val)
{
$ this->$cf = $val;
}
}
parent::__construct();
}
/* *
* 设置数据表(例如:在操作的过程中需要改变数据表,就可以使用此方法)
* @param string $table
*/
public function set_table($table)
{
$ this->table = $table;
}
/* *
* 读取一条记录
* @param string $id 主键
* @param string $fields 获取字段
* @return array
*/
public function read($id, $fields= ' * ')
{
$sql = " SELECT {$fields} FROM `{$this->table}` WHERE `id`='{$id}' ";
$ this->query($sql);
return $ this->fetch_one();
}
/* *
* 插入一条记录
* @param array $array 数组
* @return bool
*/
public function insert($array)
{
$fields = array();
$values = array();
foreach($array as $f => $v)
{
$fields[] = " `{$f}` ";
$values[] = " ' ".mysql_real_escape_string($v). " ' ";
}
$fields = implode( ' , ', $fields);
$values = implode( ' , ', $values);
$sql = " INSERT INTO `{$this->table}`({$fields}) VALUES({$values}) ";
return $ this->query($sql);
}
/* *
* 更新一条记录
* @param int $id 主键
* @param array $array 数据数组
*/
public function update($id, $array)
{
$values = array();
foreach($array as $f => $v)
{
$values[] = " `{$f}`=' ".mysql_real_escape_string($v). " ' ";
}
$values = implode( ' , ', $values);
$sql = " UPDATE `{$this->table}` SET {$values} WHERE id='{$id}' limit 1 ";
return $ this->query($sql);
}
/* *
* 删除一条记录
* @param int $id 主键
* @return bool
*/
public function delete($id)
{
$sql = " DELETE FROM `{$this->table}` WHERE id='{$id}' limit 1 ";
return $ this->query($sql);
}
/* *
* 获取分页列表的数据
* @param array $wheres where条件数组,如果下标是数字,则直接加入条件,否则组合成:`{下标}`='{值}'这样的条件。最后用and链接
* @param string $order 排序字段
* @param int $desc 是否是降序
* @param int $offset 偏移量
* @param int $limit 读取记录数
* @param int $return_total 是否返回满足条件的记录总数,默认为0,需要显示分页时可以设置为1.
* @return array
*/
public function get_list($wheres, $order= '', $desc= 1, $offset= 0, $limit= 8, $return_total= 0)
{
// 处理where条件
if($wheres)
{
$ where = array();
foreach($wheres as $f => $v)
{
if(is_numeric($f))
{
$ where[] = $v;
}
else
{
$ where[] = " `{$f}`=' ".mysql_real_escape_string($v). " ' ";
}
}
$ where = implode( ' and ', $ where);
}
else
{
$ where = ' 1 ';
}
// 处理orderby
if(!emptyempty($order))
{
$order = " order by `{$order}` " . ( 1===$desc ? ' desc ' : ' asc ');
}
$sql = " SELECT * FROM `{$this->table}` WHERE {$where} {$order} limit {$offset}, {$limit} ";
$ this->query($sql);
$data = $ this->fetch_all();
if($return_total)
{
// 返回记录总数(分页)
$sql = " SELECT count(*) FROM `{$this->table}` WHERE {$where} ";
$ this->query($sql);
$total = $ this->fetch_one();
return array( ' total '=>current($total), ' list '=>$data);
}
else
{
return $data;
}
}
}
/* *
* 自动化数据表操作类
* @author 小蔡 <cyy0523xc@gmail.com>
* @version 1.0
*/
class cls_crud extends cls_database
{
/* *
* 数据表名
* @var string
*/
private $table = '';
/* *
* 构造函数
* @param array $config 配置变量
*/
public function __construct($config)
{
if(!emptyempty($config))
{
foreach($config as $cf => $val)
{
$ this->$cf = $val;
}
}
parent::__construct();
}
/* *
* 设置数据表(例如:在操作的过程中需要改变数据表,就可以使用此方法)
* @param string $table
*/
public function set_table($table)
{
$ this->table = $table;
}
/* *
* 读取一条记录
* @param string $id 主键
* @param string $fields 获取字段
* @return array
*/
public function read($id, $fields= ' * ')
{
$sql = " SELECT {$fields} FROM `{$this->table}` WHERE `id`='{$id}' ";
$ this->query($sql);
return $ this->fetch_one();
}
/* *
* 插入一条记录
* @param array $array 数组
* @return bool
*/
public function insert($array)
{
$fields = array();
$values = array();
foreach($array as $f => $v)
{
$fields[] = " `{$f}` ";
$values[] = " ' ".mysql_real_escape_string($v). " ' ";
}
$fields = implode( ' , ', $fields);
$values = implode( ' , ', $values);
$sql = " INSERT INTO `{$this->table}`({$fields}) VALUES({$values}) ";
return $ this->query($sql);
}
/* *
* 更新一条记录
* @param int $id 主键
* @param array $array 数据数组
*/
public function update($id, $array)
{
$values = array();
foreach($array as $f => $v)
{
$values[] = " `{$f}`=' ".mysql_real_escape_string($v). " ' ";
}
$values = implode( ' , ', $values);
$sql = " UPDATE `{$this->table}` SET {$values} WHERE id='{$id}' limit 1 ";
return $ this->query($sql);
}
/* *
* 删除一条记录
* @param int $id 主键
* @return bool
*/
public function delete($id)
{
$sql = " DELETE FROM `{$this->table}` WHERE id='{$id}' limit 1 ";
return $ this->query($sql);
}
/* *
* 获取分页列表的数据
* @param array $wheres where条件数组,如果下标是数字,则直接加入条件,否则组合成:`{下标}`='{值}'这样的条件。最后用and链接
* @param string $order 排序字段
* @param int $desc 是否是降序
* @param int $offset 偏移量
* @param int $limit 读取记录数
* @param int $return_total 是否返回满足条件的记录总数,默认为0,需要显示分页时可以设置为1.
* @return array
*/
public function get_list($wheres, $order= '', $desc= 1, $offset= 0, $limit= 8, $return_total= 0)
{
// 处理where条件
if($wheres)
{
$ where = array();
foreach($wheres as $f => $v)
{
if(is_numeric($f))
{
$ where[] = $v;
}
else
{
$ where[] = " `{$f}`=' ".mysql_real_escape_string($v). " ' ";
}
}
$ where = implode( ' and ', $ where);
}
else
{
$ where = ' 1 ';
}
// 处理orderby
if(!emptyempty($order))
{
$order = " order by `{$order}` " . ( 1===$desc ? ' desc ' : ' asc ');
}
$sql = " SELECT * FROM `{$this->table}` WHERE {$where} {$order} limit {$offset}, {$limit} ";
$ this->query($sql);
$data = $ this->fetch_all();
if($return_total)
{
// 返回记录总数(分页)
$sql = " SELECT count(*) FROM `{$this->table}` WHERE {$where} ";
$ this->query($sql);
$total = $ this->fetch_one();
return array( ' total '=>current($total), ' list '=>$data);
}
else
{
return $data;
}
}
}