mysql sql model设置_操作mysql model

protected $tabName;//表名

protected $where=null;//条件

protected $limit=null;//限制

protected $orderBy=null;//排序

protected $fields=array();//字段信息

protected $pk;//主键的名称

protected $sql;//sql语句

function __construct($tabName){$this->link=mysql_connect(HOST,USER,PWD,true);mysql_select_db(DBNAME,$this->link);mysql_query(‘set names utf8‘);$this->tabName=$tabName;//获取表中的所有字段,放置在成员属性 fields中

$this->getFields();

}/**

* 获取字段信息,以数组的形式写入到成员属性fields中

* 获取主键的名称,写入到成员属性pk中

*

**/

functiongetFields(){$sql="desc $this->tabName";$result=mysql_query($sql);if($result && mysql_num_rows($result)>0){while($arr=mysql_fetch_assoc($result)){//print_r($arr);

//echo "


";

$this->fields[]=$arr[‘Field‘];if($arr[‘Key‘]==‘PRI‘){$this->pk=$arr[‘Field‘];

}

}

}//print_r($this->fields);

//exit;

}/** select查询获取多条语句

* @return array 查询的数据的数组

*

**/

/** find 单条数据

* max 获取最大值

* min 获取最小值

* avg 获取平均数

* sum 获取和

*

**/

functionselect(){$data=array();$this->sql="select * from {$this->tabName} {$this->where} {$this->orderBy} {$this->limit}";$result=mysql_query($this->sql);if($result && mysql_num_rows($result)>0){while($arr=mysql_fetch_assoc($result)){$data[]=$arr;

}

}$this->clearAll();return $data;

}/**

* 添加数据

* @param array 要添加的数据

* @return int 影响行数

*

**/

function insert($var=array()){if(empty($var)){$var=$_POST;

}$keys=‘‘;$values=‘‘;foreach($var as $k=>$v){if(!in_array($k,$this->fields)){continue;

}$keys.="`{$k}`,";$values.="‘{$v}‘,";

}$keys=rtrim($keys,‘,‘);$values=rtrim($values,‘,‘);$this->sql="insert into {$this->tabName}({$keys}) values({$values})";$result=mysql_query($this->sql);if($result){return mysql_affected_rows();

}else{return 0;

}

}/**

* 修改数据

* @param array 要添加的数据

* @return int 影响行数

*

* 如 array(‘name‘=>‘abc‘,‘sex‘=>0,‘password‘=>‘123‘,‘id‘=>10);

* `name`=‘abc‘,`sex`=‘0‘,`password`=‘123‘

**/

function update($var=array()){$tmp=‘‘;if(empty($var)){$var=$_POST;

}$keys=‘‘;$values=‘‘;foreach($var as $k=>$v){if(!in_array($k,$this->fields) || $k==$this->pk){ //过滤掉非法字段以及主键

continue;

}$tmp.="`{$k}`=‘{$v}‘,";

}$tmp=rtrim($tmp,‘,‘);//$this->sql="insert into {$this->tabName}({$keys}) values({$values})";

$this->sql="update {$this->tabName} set {$tmp} where {$this->pk}={$var[$this->pk]}";$result=mysql_query($this->sql);if($result){return mysql_affected_rows();

}else{return 0;

}

}/**

* 删除方法

* @param int id号

* @return int 影响行数

*

**/

function delete($var){$sql="delete from {$this->tabName} where {$this->pk}={$var}";$result=mysql_query($sql);if($result){return mysql_affected_rows();

}else{return 0;

}

}protected functionclearAll(){$this->where=null;$this->limit=null;$this->orderBy=null;

}/**

* 条件函数

* 在函数中向成员属性$where传递条件的值

* @param string $var 条件值

* @return Model 对象

**/

function where($var){$where=‘‘;//临时变量where

if(is_int($var)){$where="id={$var}";

}elseif(is_string($var)){$where="{$var}";

}elseif(is_array($var)){$logic=isset($var[‘_logic‘])?$var[‘_logic‘]:‘and‘;//array(‘name‘=>‘ztz‘,‘sex‘=>‘1‘,‘abc‘=>‘or‘)

//"name=‘ztz‘ and sex=1"

foreach($var as $k=>$v){//判断键是否是合法的字段名称,非法的被过滤

//$k = ‘abc‘;

//$this->fields array(‘id‘,‘name‘,‘sex‘,‘password‘);

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

}$where.="{$k} = ‘{$v}‘ {$logic} ";

}$where=rtrim($where," {$logic} ");

}else{die(‘您在where中输入的数据不再处理范围之内,请核对代码,或者联系项目经理解决‘);//return $this;

}$this->where="where $where";//where id >10

return $this;

}function limit($var){$this->limit="limit {$var}";return $this;

}function orderBy($var){$this->orderBy=" order by {$var}";return $this;

}/**

* 获取最后一条sql语句

* @return string $sql 返回成员属性sql语句

*

**/

functiongetLastSql(){return $this->sql;

}

}$user=new Model(‘user‘);//where 条件可以是

//string 可以直接用

//int id=10

// "name=‘ztz‘ or sex=1" array(‘name‘=>‘ztz‘,‘sex‘=>‘1‘,‘_logic‘=>‘and‘)

$user->update();$arr=$user->select();//$user->delete(10);

print_r($arr);//echo "


";

//$arr2=$user->select();

//print_r($arr2);

echo "


";echo $user->getLastSql();?>Model.class

姓名:性别:男 女

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值