php面相对象创建表格,php面向对象之单表操作类

本文介绍了一个基于PHP和MySQL的数据库操作类,展示了如何进行CRUD操作,包括查询、插入、更新和删除数据,以及封装了搜索条件、排序和分页功能。适合初学者理解数据库基本操作和面向对象编程在数据库操作中的应用。
摘要由CSDN通过智能技术生成

//数据库单表操作类

define("HOST","localhost");

define("USER","root");

define("PASS","");

define("DBNAME","lamp78");

class Db

{

protected $link;   //连接资源

protected $tablename; //表名

protected $pk='id'; //主键字段名

protected $fields=array(); //当前表的字段信息

protected $where=array();//封装搜索条件属性

protected $order=null; //排序属性

protected $limit=null; //分页属性(获取部分数据)

public function __construct($tablename)

{

$this->tablename = $tablename;

// 数据库连接

$this->link=@mysql_connect(HOST,USER,PASS) or die('数据库连接失败!');

mysql_set_charset("utf8");

mysql_select_db(DBNAME,$this->link);

//获取当前表的结构和主键名

$this->getFields();

}

//私有方法,加载当前表中的所有字段信息

private function getFields(){

$sql = "desc {$this->tablename}";

$result = mysql_query($sql,$this->link);

//解析表结构信息

while($row = mysql_fetch_assoc($result)){

$this->fields[]=$row['Field']; //获取字段名

//判断并获取主键名

if($row['Key']=="PRI"){

$this->pk = $row['Field'];

}

}

mysql_free_result($result);

}

//封装各种条件或获取所有对应数据信息

public function select()

{

$list = array();

//拼装sql语句

$sql ="select * from {$this->tablename}";

//判断并封装where条件

if(count($this->where)>0){

$sql.=" where ".implode(" and ",$this->where);

}

//判断并封装order排序条件

if($this->order){

$sql.=" order by ".$this->order;

}

//判断并封装分页条件

if($this->limit){

$sql.=" limit ".$this->limit;

}

//执行查询,获取数据。

$result = mysql_query($sql,$this->link);

echo $sql;

//解析结果集

while($row = mysql_fetch_assoc($result)){

$list[]=$row;

}

mysql_free_result($result); //释放结果集

return $list;

}

//获取封装条件的总数据条数

public function total()

{

$list = array();

//拼装sql语句

$sql ="select count(*) from {$this->tablename}";

//判断并封装where条件

if(count($this->where)>0){

$sql.=" where ".implode(" and ",$this->where);

}

//执行查询,获取数据。

$result = mysql_query($sql,$this->link);

return mysql_result($result,0,0);

}

//获取所有数据

public function findAll()

{ $list = array();

//拼装sql语句

$sql ="select * from {$this->tablename}";

//执行查询,获取数据。

$result = mysql_query($sql,$this->link);

//解析结果集

while($row = mysql_fetch_assoc($result)){

$list[]=$row;

}

mysql_free_result($result); //释放结果集

return $list;

}

/**

* 获取指定id号的单条数据信息

* @param int id 获取信息的主键id值。

* @return array 返回值,找到数据则返回数组,否则返回null

*/

public function find($id)

{

$sql = "select * from {$this->tablename} where {$this->pk}={$id}";

//执行查询

$result = mysql_query($sql,$this->link);

//判断是有信息

if($result && mysql_num_rows($result)>0){

return mysql_fetch_assoc($result);

}else{

return null;

}

}

//执行删除

public function delete($id)

{

$sql = "delete from {$this->tablename} where {$this->pk}={$id}";

//执行删除

mysql_query($sql,$this->link);

//返回影响行数

return mysql_affected_rows($this->link);

}

//执行信息添加

public function insert($data=array()){

//判断参数是否有值,若没有则尝试从post自己获取

if(empty($data)){

$data = $_POST;

}

//过滤所有字段

$fieldlist = array();

$valuelist = array();

foreach($data as $k=>$v){

//判断是否是有效字段

if(in_array($k,$this->fields)){

$fieldlist[] = $k;

$valuelist[] = $v;

}

}

//拼装sql语句

$sql = "insert into {$this->tablename}(".implode(",",$fieldlist).") values('".implode("','",$valuelist)."')";

echo $sql;

//执行添加

mysql_query($sql,$this->link);

//返回自增信息

return mysql_insert_id($this->link);

}

//执行信息修改

public function update($data=array()){

//判断参数是否有值,若没有则尝试从post自己获取

if(empty($data)){

$data = $_POST;

}

//过滤所有字段

$fieldlist = array();

foreach($data as $k=>$v){

//判断是否是有效字段

if(in_array($k,$this->fields) && $k!=$this->pk){

$fieldlist[] = "{$k}='{$v}'";

}

}

//拼装sql语句

$sql = "update {$this->tablename} set ".implode(",",$fieldlist)." where {$this->pk}=".$_POST[$this->pk];

echo $sql;

//执行添加

mysql_query($sql,$this->link);

//返回自增信息

return mysql_insert_id($this->link);

}

//封装搜索条件方法

public function where($data)

{

$this->where[]=$data;

return $this;

}

//封装排序方法

public function order($data)

{

$this->order=$data;

return $this;

}

//封装分页方法

public function limit($m,$n=0)

{

if($n>0){

$this->limit = $m.",".$n;

}else{

$this->limit = $m;

}

return $this;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值