当前位置: 首页 » PHP » PHP数据库模型

PHP数据库模型

<?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:

发表评论