<?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;
}
}
}