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;
}
}
- PHP后台公共页面
- PHP中PDO数据库模型