您的位置:首页 > 编程语言 > PHP开发

php数据库的类

2016-06-27 10:20 369 查看
<?php
header('content-type:text/html;charset=utf-8');

//配置项
define('HOST','localhost');
define('USER','root');
define('PASS','');
define('CHARSET','utf8');
define('DBNAME', 'lamp');

//类的声明
class Model{

//成员属性
private $tableName;//表明
private $fields;//当前表的所有的字段信息
private $pk;//主键信息
private $where = '';//条件字符串
private $field = '';//字段字符串
private $limit = '';//条数限定字符串

//构造方法
public function __construct($tableName){
$this->tableName = $tableName;
//连接
@mysql_connect(HOST,USER,PASS) or die('数据库连接失败');
//选择数据库
mysql_select_db(DBNAME) or die('选择数据库失败');
//设定字符集
mysql_set_charset(CHARSET) or die('字符集设定失败');
//获取字段信息
$this->getAllFields();
}

//获取表的所有字段信息
public function getAllFields(){
//拼接sql
$sql = "desc ".$this->tableName;
//发送
$result = mysql_query($sql);
//判断
if($result){
$res = array();
$pk = "";//主键
while($row = mysql_fetch_assoc($result)){
//提取主键
if($row['Key'] =="PRI"){
$pk = $row['Field'];
}else{//如果不是主键 压入数组
$res[] = $row['Field'];
}
}
//将字段信息存入属性中
$this->fields = $res;
$this->pk = $pk;
}
}

// 数据添加操作
// array('username'=>'admin','password'=>'admin');
//                      ||
//                      ||
//                      \/
// insert into user (username,password)values('admin','admin');
public function add($arr){
//筛选
foreach($arr as $k=>$v){
//检测
if(!in_array($k, $this->fields)){
unset($arr[$k]);
}
}

//获取所有的键名
$keys = array_keys($arr);
//拼接键名的sql指令
$keys_sql = implode(',', $keys);
//获取所有的键值
$values = array_values($arr);
//拼接键值的sql
$values_sql = implode('","', $values);
$values_sql = '"'.$values_sql.'"';

//准备sql指令
$sql = "insert into ".$this->tableName." (".$keys_sql.")values(".$values_sql.")";
//执行发送
$result = mysql_query($sql);

// /处理结果
if($result){
return mysql_insert_id();
}else{
return false;
}
}

//删除操作
public function delete($id){
//拼接sql
$sql = "delete from ".$this->tableName." where ".$this->pk."=".$id;
//发送
$result = mysql_query($sql);
//处理结果
if($result){
//返回受影响的函数
return mysql_affected_rows();
}else{
return false;
}
}

// 修改
// array('username'=>'admin','password'=>'admin','id'=>1);
// update user set username='admin',password="admin" where id=1;
public function save($arr){
//筛选
foreach($arr as $k=>$v){
//如果不在字段数组中
if(!in_array($k, $this->fields)){
//如果键名不等于主键名
if($k != $this->pk){
unset($arr[$k]);
}
}
}

$sql = "";
$where = "";//where uid = 1;
//拼接sql  array('username'=>'admin','password'=>'admin','uid'=>1);
foreach($arr as $k=>$v){
//如果是主键
if($k == $this->pk){
$where = " where ".$this->pk." = ".$v;
}else{
$sql .= $k."='".$v."',";
}
}
$sql = rtrim($sql,',');
//检测是否有条件
if($where == ''){
die('不允许没有条件的更新');
}
//拼接sql
$allSql = "update ".$this->tableName." set ".$sql.$where;

//执行
$result = mysql_query($allSql);
if($result){
return mysql_affected_rows();
}else{
return false;
}
}

//查询
// select * from user where uid = 56
public function find($id){
//拼接sql
$sql = "select * from ".$this->tableName." where ".$this->pk." = ".$id;
//发送
$result = mysql_query($sql);
//判断
if($result){
$res = mysql_fetch_assoc($result);
return $res;
}else{
return false;
}
}

//查询多条数据
// $user->where("id>10")->field()->limit('1,9')->select();
public function select(){
//检测条件
$w = "";
if($this->where != ''){
$w = " where ".$this->where;
}
//检测字段
$f = "";
if($this->field != ''){
$f = $this->field;
}else{
$f = '*';
}

// /检测条数限定
$l = "";
if($this->limit != ''){
$l = " limit ".$this->limit;
}

//清空指令
$this->where = '';
$this->field = '';
$this->limit = '';

//拼接sql
$sql = "select ".$f." from ".$this->tableName. $w .$l;
// echo $sql;
//发送sql指令
$result = mysql_query($sql);
//判断
if($result){
$res = array();
while($row = mysql_fetch_assoc($result)){
$res[] = $row;

4000
}
return $res;
}else{
return false;
}
}

//声明where方法
public function where($w){
$this->where = $w;
return $this;
}

//声明field方法
public function field($f){
$this->field = $f;
return $this;
}

//声明limit方法
public function limit($l){
$this->limit = $l;
return $this;
}

//获取表条数总数
public function count(){
//拼接sql
$sql = "select count(*) as total from ".$this->tableName;
//发送
$result = mysql_query($sql);
//判断
if($result){
$res = mysql_fetch_assoc($result);
return $res['total'];
}else{
return false;
}
}

}

//实例化对象
// $user = new Model('user');

//添加操作
// $arr = array('username'=>'admin','password'=>'admin','a'=>100);
// $res = $user->add($arr);

//删除
// $res = $user->delete(10000);
// var_dump($res);

//更新操作
// $arr = array('username'=>'admin','password'=>'admin','uid'=>1,'a'=>100);
// $user->save($arr);

//查询单条数据
// $res = $user->find(59000);

//查询多条数据
// $res = $user->where('uid>10')->field('uid,username,password')->limit(10)->select();
// var_dump($res);

// $res2 = $user->select();
// var_dump($res2);

//获取总数
// $count = $user->count();
// var_dump($count);

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息