/**

* 数据模型类

* @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

发表评论

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

php mysql sql model_PHP数据库模型相关推荐

  1. php mysql sql mode_Mysql之SQL Mode用法详解_MySQL

    一.Mysql SQL Mode简介 通常来说MySQL服务器能够工作在不同的SQL模式下,并能针对不同的客户端以不同的方式应用这些模式.这样,应用程序就能对服务器操作进行量身定制以满足自己的需求.这 ...

  2. Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道

    Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道 Keyword::截取文本文件后部分 查看提示max_allowed_packet限制 Target Se ...

  3. Mysql SQL Mode详解

    Mysql SQL Mode简介 MySQL服务器能够工作在不同的SQL模式下,并能针对不同的客户端以不同的方式应用这些模式.这样,应用程序就能对服务器操作进行量身定制以满足自己的需求.这类模式定义了 ...

  4. 导出mysql sql语句吗_mysql sql语句导入与导出

    mysql sql语句导入与导出 导入: mysql -u root -p 数据库名 如: C:/mysql/bin>mysql -u root -p house < c:/1-1.txt ...

  5. mysql sql语句大全

    1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份 ...

  6. mysql sql优化书籍_MySQL SQL优化的正确姿势

    大家好,我是知数堂SQL 优化班老师 网名:骑龟的兔子 已经很久没写文章了 今天分享一篇优化SQL 案例 slow query 里有如下 SQL 看下执行计划如下 从执行计划可以看出C表全表扫描了 那 ...

  7. mysql inception web_基于Inception搭建MySQL SQL审核平台Yearing

    Inception 1. Inceptionj简介 Inception是一款针对MySQL的SQL语句审核自动化运维工具.使用Inception,将会给DBA带来更大的便利性,将DBA从繁冗的工作中解 ...

  8. oracle rds 运维服务_从运维的角度分析使用阿里云数据库RDS的必要性–你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库...

    开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database ...

  9. mybatis mysql merge_使用Mybatis和druid连接池报错 merge sql error, dbType mysql, sql

    在项目中用mybatis查询的时候遇到一个这样的问题,抛错详情如下: merge sql error, dbType mysql, sql : select r.id from role r inne ...

  10. mysql sql归类_带有归类SQL强制转换SQL Server归类介绍

    mysql sql归类 SQL Server collation refers to a set of character and character encoding rules, and infl ...

最新文章

  1. gitolite搭建
  2. 免费获取 Kaspersky Small Office Security 90 天授权
  3. sqlerver mysql_转 MYSQL学习(一)
  4. Git——Git基本教程
  5. 安装MongoDB [4.0.2版本]
  6. android系统的发展态势,2020年安卓手机发展的7个趋势,只有延伸,并无革命性的变化...
  7. 膨胀卷积的缺点_膨胀卷积与IDCNN
  8. 双重特异性酪氨酸磷酸化调节激酶1A行业调研报告 - 市场现状分析与发展前景预测
  9. iOS应用程序瘦身的静态库解决方案
  10. 小程序发布,你方了么?
  11. EDIUS 3.6快捷键
  12. modal 可拖拽 elementui antd
  13. 打开GTA 5竟要跑19.8亿次if语句!黑客嘲讽R星代码烂,修改后直接省70%加载时间...
  14. 三维激光扫描后处理软件_地面三维激光扫描仪应用之一|云尚智造
  15. 为什么要用 Tair 来服务低延时场景 - 从购物车升级说起
  16. 智力推理:三个孩子的年龄分别是多少?
  17. 使用Pyecharts进行全国水质TDS地图可视化全过程9:构建字典,批量生成所有省份地图
  18. 华为应用市场名称问题
  19. 微信小程序创建项目后无法显示内容
  20. KSO - docker部署Rabbitmq的详细讲解以及各种隐藏坑

热门文章

  1. ACWING830 单调栈
  2. 核函数(Kernel Function)与SVM
  3. 【图论】最优乘车(最短路变形)
  4. java数字代码_Java基础08—数字类处理(示例代码)
  5. nfc卡模式与标准模式_马苏开启年后减肥模式,素颜自拍打卡,皮肤光滑香汗淋漓惹人注目...
  6. ios控制中心android版,IOS控制中心
  7. php如何在sql语句中使用,php – 如何在SQL查询中使用数组
  8. idea全局主题_2020年最新-IDEA最详细配置(配图文收藏版配置)
  9. dockerfile拉取私库镜像_关于kubernetes拉取私库镜像需要注意的点
  10. MongoDB save()方法和insert()方法的区别