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
发表评论
要发表评论,您必须先登录。
php mysql sql model_PHP数据库模型相关推荐
- php mysql sql mode_Mysql之SQL Mode用法详解_MySQL
一.Mysql SQL Mode简介 通常来说MySQL服务器能够工作在不同的SQL模式下,并能针对不同的客户端以不同的方式应用这些模式.这样,应用程序就能对服务器操作进行量身定制以满足自己的需求.这 ...
- Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道
Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道 Keyword::截取文本文件后部分 查看提示max_allowed_packet限制 Target Se ...
- Mysql SQL Mode详解
Mysql SQL Mode简介 MySQL服务器能够工作在不同的SQL模式下,并能针对不同的客户端以不同的方式应用这些模式.这样,应用程序就能对服务器操作进行量身定制以满足自己的需求.这类模式定义了 ...
- 导出mysql sql语句吗_mysql sql语句导入与导出
mysql sql语句导入与导出 导入: mysql -u root -p 数据库名 如: C:/mysql/bin>mysql -u root -p house < c:/1-1.txt ...
- mysql sql语句大全
1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份 ...
- mysql sql优化书籍_MySQL SQL优化的正确姿势
大家好,我是知数堂SQL 优化班老师 网名:骑龟的兔子 已经很久没写文章了 今天分享一篇优化SQL 案例 slow query 里有如下 SQL 看下执行计划如下 从执行计划可以看出C表全表扫描了 那 ...
- mysql inception web_基于Inception搭建MySQL SQL审核平台Yearing
Inception 1. Inceptionj简介 Inception是一款针对MySQL的SQL语句审核自动化运维工具.使用Inception,将会给DBA带来更大的便利性,将DBA从繁冗的工作中解 ...
- oracle rds 运维服务_从运维的角度分析使用阿里云数据库RDS的必要性–你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库...
开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database ...
- 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 ...
- mysql sql归类_带有归类SQL强制转换SQL Server归类介绍
mysql sql归类 SQL Server collation refers to a set of character and character encoding rules, and infl ...
最新文章
- gitolite搭建
- 免费获取 Kaspersky Small Office Security 90 天授权
- sqlerver mysql_转 MYSQL学习(一)
- Git——Git基本教程
- 安装MongoDB [4.0.2版本]
- android系统的发展态势,2020年安卓手机发展的7个趋势,只有延伸,并无革命性的变化...
- 膨胀卷积的缺点_膨胀卷积与IDCNN
- 双重特异性酪氨酸磷酸化调节激酶1A行业调研报告 - 市场现状分析与发展前景预测
- iOS应用程序瘦身的静态库解决方案
- 小程序发布,你方了么?
- EDIUS 3.6快捷键
- modal 可拖拽 elementui antd
- 打开GTA 5竟要跑19.8亿次if语句!黑客嘲讽R星代码烂,修改后直接省70%加载时间...
- 三维激光扫描后处理软件_地面三维激光扫描仪应用之一|云尚智造
- 为什么要用 Tair 来服务低延时场景 - 从购物车升级说起
- 智力推理:三个孩子的年龄分别是多少?
- 使用Pyecharts进行全国水质TDS地图可视化全过程9:构建字典,批量生成所有省份地图
- 华为应用市场名称问题
- 微信小程序创建项目后无法显示内容
- KSO - docker部署Rabbitmq的详细讲解以及各种隐藏坑
热门文章
- ACWING830 单调栈
- 核函数(Kernel Function)与SVM
- 【图论】最优乘车(最短路变形)
- java数字代码_Java基础08—数字类处理(示例代码)
- nfc卡模式与标准模式_马苏开启年后减肥模式,素颜自拍打卡,皮肤光滑香汗淋漓惹人注目...
- ios控制中心android版,IOS控制中心
- php如何在sql语句中使用,php – 如何在SQL查询中使用数组
- idea全局主题_2020年最新-IDEA最详细配置(配图文收藏版配置)
- dockerfile拉取私库镜像_关于kubernetes拉取私库镜像需要注意的点
- MongoDB save()方法和insert()方法的区别