php mysql sql model_PHP数据库模型

/**

* 数据模型类

* @author LiZeQiao <674531003@qq.com>

* @param $tableName string 表名

*/

class Model{

protected $dbHost=’localhost’;    //主机名

protected $dbUser=’root’;        //数据库用户名

protected $dbPwd=’mayanlong’;    //数据库密码

protected $dbName=’teacher’;        //数据库名

protected $tableName=”;        //表名

protected $total;                //select总行数

protected $link;                //连接

protected $fields=array();        //表的字段名

protected $priKey;                //表的主键名(唯一字段)

protected $where=”;            //where条件组成的字段where(‘ id>1 and …’)

protected $group=”;            //group by 条件组成的字段

protected $having=”;            //having 条件组成的字段

protected $order=”;            //order 条件组成的字段

/**

* 构造函数

* @param $tableName string 表名

*/

public function __construct($tableName=”){

$this->tableName=$tableName;

$this->connect();        //数据库初始化

//$this->getFields();        //获取表的所有字段

}

/**

* 数据库初始化

*/

public function connect(){

$this->link=mysql_connect($this->dbHost,$this->dbUser,$this->dbPwd);

mysql_select_db($this->dbName,$this->link);

mysql_set_charset(‘utf8′,$this->link);

}

/**

* 获取当前操作表的所有字段

*/

public function getFields(){

$sql=”desc {$this->tableName} “;

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

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

$fields[]=$row['Field'];    //所有字段

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

$this->priKey=$row['Field'];    //确定表的主键

}

}

$this->fields=$fields;

}

/**

* query() 函数    支持原生sql语法

* @param $sql 原生sql语句

* @return 查询结果是布尔值返回布尔值 是资源返回二维数组

*/

public function query($sql){

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

//如果是布尔值

if(is_bool($result)){

if($result){

return mysql_insert_id($this->link);

}else{

return false;

}

}

//如果是个资源

if(is_resource($result)){

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

$records[]=$row;

}

return $records;

}

}

/**

* 增加一条记录

* @param $data array 提交的form表单中的数组

* @return 成功返回id 失败返回false

*/

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

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

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

$keys .= $k . ‘,’;

if(get_magic_quotes_gpc()){

$v=stripcslashes($v);

}

$v=mysql_real_escape_string($v,$this->link);    //防SQL注入,做一个安全转义

$values .= “‘$v’,”;

}

}

$keys=rtrim($keys,’,’);

$values=rtrim($values,’,’);

$sql=”insert into {$this->tableName} ($keys) values($values) “;

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

if($bool){

return mysql_insert_id($this->link);

}else{

return false;

}

}

/**

* 查询记录列表

* @param

* @return 成功返回查询记录 是二维数组$records 失败返回false

*/

public function select(){

$fields=implode(‘,’,$this->fields);        //组装$this->fields成这样id,name,sex,age,email

$sql=”select {$fields} from {$this->tableName} {$this->where} {$this->group} {$this->having} {$this->order} “;

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

if($result && mysql_affected_rows($this->link) > 0){

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

$records[]=$row;

}

$this->total=mysql_affected_rows($this->link);

return $records;

}else{

return false;

}

}

/**

* 通过主键查找一条记录

* @param $pk int 主键 如$id

* @return 成功返回查询记录 是一维数组$record 失败返回false

*/

public function find($pk){

$sql=”select * from {$this->tableName} where {$this->priKey}= ” . intval($pk);

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

if($result && mysql_affected_rows($this->link)==1){

return $record=mysql_fetch_assoc($result);

}else{

return false;

}

}

/**

* 更新一条记录

* @param $data array 提交的form表单中的数组

* @param $id int  修改记录的id

* @return 成功返回id 失败返回false

*/

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

//循环过滤属性把数组组装成 name=’张三’,age=’183′,email=’aaa@bb.com’

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

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

if(get_magic_quotes_gpc()){

$v=stripcslashes($v);

}

$v=mysql_real_escape_string($v,$this->link);    //防SQL注入,做一个安全转义

$set_sql .= “{$k}=’$v’,”;

}

}

$set_sql=rtrim($set_sql,’,’);

$sql=”update {$this->tableName} set {$set_sql} where {$this->priKey}=” . intval($id);

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

if($bool && mysql_affected_rows($this->link) ==1 ){

return $id;

}else{

return false;

}

}

/**

* 删除一条记录

* @param $id int  记录的id

* @return 成功返回id 失败返回false

*/

public function delete($id){

$sql=”delete from {$this->tableName} where {$this->priKey}=” . intval($id);

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

if($bool){

return $id;

}else{

return false;

}

}

/**

* 统计总行数

* @return 成功返回id 失败返回false

*/

public function count(){

return $this->total;

}

/**

* where() 函数

* @param $where 条件

* @return 返回该对象

*/

public function where($where=”){

if(!empty($where)){

$this->where=’ where ‘ . $where;

}

return $this;

}

/**

* group() 函数

* @param $group 条件

* @return 返回该对象

*/

public function group($group=”){

if(!empty($group)){

$this->group=’ group by ‘ . $group;

}

return $this;

}

/**

* having() 函数

* @param $having 条件

* @return 返回该对象

*/

public function having($having=”){

if(!empty($having)){

$this->having=’ having ‘ . $having;

}

return $this;

}

/**

* order() 函数

* @param $order 条件

* @return 返回该对象

*/

public function order($order=”){

if(!empty($order)){

$this->order=’ order by ‘ . $order;

}

return $this;

}

}

请尊重我们的辛苦付出,未经允许,请不要转载 本站 的文章,鄙视各种无耻的采集行为!

Tagged on: model

发表评论

要发表评论,您必须先登录。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值