php 数据库类

<?php
/*** 对Yii2数据封装* @author nike@youfumama.com* @date 2017-03-08* 抽象类不能被实例化* eg1: selectuse common\models as b_model;$users_model = b_model\FactoryModel::users();$users_model->setPk(1);$users_model->setFields('id,name,age,sex');$result = $users_model->getInfoByPk();=================================================eg2: update|insertuse common\models as b_model;use common\models\entity as b_entity;$users_entity = new b_entity\Users();$users_entity->name = '尼克';$users_entity->age = 25;$users_model = b_model\FactoryModel::users();$users_model->setPk(1);$result = $users_model->updateByPk($users_entity);*/
namespace common\models;use yii;
use yii\db\ActiveRecord;/*** Base model* @author nike@youfumama.com* @date 2017-03-08*/
abstract class BaseModel extends ActiveRecord
{protected static $_db = null;private $sql;private $PrimaryKeyField; //主键字段名private $pk; //主键private $field_values;//存放数据库字段数组protected $table;protected $field = '*';protected $where;protected $orderby;protected $limit;protected $groupby;/*** set db* @param type $db*/protected function _setDb($db = null){if(null == $db)$db = Yii::$app->db;self::$_db = $db;}/*** get db* @return type*/protected function _getDb(){if(empty(self::$_db))$this->_setDb ();return self::$_db;}/*** 设置SQL语句*/private function setSQL($sql){$this->sql = $sql;}/*** 获取SQL语句*/function getSQL(){return $this->sql;}/*** 设置field_values*/private function setFieldValues($field_values){if(!is_object($field_values))throw new Exception ('entity must be Object', 500);$this->field_values = $field_values;}/*** 获取field_values*/private function getFieldValues(){return $this->cleanArray((array)$this->field_values);}/*** 清除values of SQL injections* @param type $array* @return array*/private function cleanArray($array){$array = array_map('trim', $array);$array = array_map('stripslashes', $array);$array = array_map('mysql_real_escape_string', $array);return $array;}/*** 设置主键字段名*/protected function setPrimaryKeyField($PrimaryKeyField){$this->PrimaryKeyField = $PrimaryKeyField;}/*** 获取主键字段名*/protected function getPrimaryKeyField(){return $this->PrimaryKeyField;}/*** 设置主键值* @param int*/public function setPk($pk){$this->pk = $pk;}/*** 获取主键值* @return int*/public function getPk(){return $this->pk;}/*** 设置表名*/protected function setTable($table){$this->table = $table;}/*** 获取表名*/protected function getTable(){return $this->table;}/*** 设置Fields*/function setFields($fields){$this->field = $fields;}/*** 获取Fields*/function getFields(){return $this->field;}/*** 设置where条件*/function setWhere($where){$this->where = $where;}/*** 获取where条件*/function getWhere(){return $this->where;}/*** 设置Group*/function setGroupBy($groupby){$this->groupby = $groupby;}/*** 获取Group*/function getGroupBy(){return $this->groupby;}/*** 设置Order*/function setOrderBy($orderby){$this->orderby = $orderby;}/*** 设置Order*/function getOrderBy(){return $this->orderby;}/*** 设置条数*/function setLimit( $limit ){$this->limit = $limit;}/*** 获取条数*/function getLimit(){return $this->limit;}/*** 根据主键获取*/function getInfoByPk(){$sql = "select {$this->getFields()} "."from {$this->getTable()} "."where {$this->getPrimaryKeyField()}={$this->getPk()}";return $this->query_one($sql);}/*** 根据where条件获取一条信息*/function getOneByWhere(){$sql = "SELECT {$this->getFields()} ". "FROM {$this->getTable()} ". "WHERE {$this->getWhere()}";return $this->query_one($sql);}/*** 根据where条件获取数组列表*/function getListByWhere(){$sql = "SELECT ";$sql .= "{$this->getFields()} ". "FROM {$this->getTable()} ";if ( $this->getWhere() != null ) {$sql .= "WHERE {$this->getWhere()} ";}if ( $this->getGroupby() != null ) {$sql .= "GROUP BY {$this->getGroupby()} ";}if ( $this->getOrderby() != null ) {$sql .= "ORDER BY {$this->getOrderby()} ";}if ( $this->getLimit() != null ) {$sql .= "LIMIT {$this->getLimit()}";}return $this->query_all($sql);}/*** 根据where获取count*/function getCountByWhere(){$sql_count = "SELECT COUNT(*) AS total FROM {$this->getTable()} ";if ( $this->getWhere() != null ) {$sql_count .= "WHERE " . $this->getWhere();}return $this->query_scalar($sql_count);}/*** 根据主键更新*/function updateByPk($entity){$this->setFieldValues($entity);$sql = "UPDATE {$this->getTable()} SET ";foreach ($this->getFieldValues() as $key => $one){if ($one != NULL){$sql .= "$key='$one',";}}$sql = rtrim($sql, ',');$sql .= " WHERE {$this->getPrimaryKeyField()}='{$this->getPk()}'";return $this->execute($sql);}/*** 根据WHERE更新*/function updateByWhere($entity){$this->setFieldValues($entity);$sql = "UPDATE {$this->getTable()} SET ";foreach ($this->getFieldValues() as $key => $one){if ($one != NULL){$sql .= "$key='$one',";}}$sql = rtrim($sql, ',');$sql .= " {$this->getWhere()}";return $this->execute($sql);}/*** 根据WHERE更新*/function insert_table($entity){$this->setFieldValues($entity);$sql_values = '';$sql = "INSERT INTO {$this->getTable()} (";foreach ($this->getFieldValues() as $key => $one){if ($one != NULL){$sql .= "$key,";$sql_values .= "'$one',";}}$sql = rtrim($sql, ',').") VALUES (".rtrim($sql_values, ',').")";return $this->execute($sql);}//-------------------------Yii2 base----------------------//-------------------------Yii2 base----------------------//-------------------------Yii2 base----------------------//* @author nike@youfumama.com//* @date 2017-03-08//* 可扩展/*** 只获取一行,如果该查询没有结果则返回 false* @param type $sql* @return mix*/private function query_one($sql){return $this->_getDb()->createCommand($sql)->queryOne();}/*** 返回所有数组,如果该查询没有结果则返回空数组* @param type $sql* @return type*/private function query_all($sql){return $this->_getDb()->createCommand($sql)->queryAll();}/*** 返回一个标量值,如果该查询没有结果则返回 false* @param type $sql* @return type*/private function query_scalar($sql){return $this->_getDb()->createCommand($sql)->queryScalar();}/*** execute操作* @param type $sql* @return type*/private function execute($sql){return $this->_getDb()->createCommand($sql)->execute();}/*** sql过滤,后期安全扩展* @param type $str* @return type*/private function cleanString($value = ''){if (is_string($value)) {$value = trim($value);$value = stripslashes($value);$value = mysqli_real_escape_string($value);}return $value;}//-------------------------Yii2 END----------------------//-------------------------Yii2 END----------------------//-------------------------Yii2 END----------------------
}

转载于:https://www.cnblogs.com/xyyphp/p/5952508.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件:分享9款实用电脑软件,值得看一看

目录 01.ArcTime 02.Luminar 4 03.嗨格式数据恢复大师 04. iTools 05.皮皮直连 06.Kodi 07. PhotoZoom 08.AnyDesk 09.射手影音 今天给大家分享9款实用电脑软件&#xff0c;值得看一看。 01.ArcTime 下载地址&#xff1a;https://arctime.org/ 这是一款特别好用的字幕制作软件。…

怎么转化大小写_亚马逊search term被限制,Search Terms只能写一行怎么办?

search term简称ST&#xff0c; 也叫做亚马逊的关键字&#xff0c;由亚马逊为卖家提供的&#xff0c;除了Title标题&#xff0c;Description描述之外的关键字拓展功能&#xff0c;正确的书写5行描述可以提曝光&#xff0c;流量&#xff0c;和转化.关键字建议包含了客户的具体需…

Idea实现WebService实例 转

作者&#xff1a;http://blog.csdn.net/dreamfly88/article/details/52350370 因为工作需要&#xff0c;数据传输部分需要使用webservice实现&#xff0c;经过两天的研究&#xff0c;实现了一个简单的例子&#xff0c;具体方法如下。 首先需要新建一个项目&#xff0c;如图&…

电脑操作系统维护10条实用建议

目录 1、经常进行“磁盘清理”和磁盘碎片整理” 2、移动internet临时文件和临时交换文件 3、开启wondows xp保留的20%带宽 4、删除不必要的系统声音 5、定期清理internet预读文件 6、关于internet explorer 7、优化硬盘参数 8、让系统自动释放系统资源 9、固定自己的DNS和IP 10…

h5 手风琴效果_小程序-实现折叠面板-手风琴效果

背景无论是在小程序还是 h5 网页,折叠菜单,手风琴是一个非常常见的效果,如今也有很多现成的 UI 组件库已经实现了这一效果的,但有时候在写原生小程序时,单单就是一个折叠菜单效果,却要引入整个 UI 库,有点得不偿失以下就自己手动实现一个的实例效果具体实现如下是wxml示例代码&…

oracle数据库连接 ORA-12638:身份证明检索失败

连数据库的时候突然报了一个这个 查找各种办法&#xff0c;发现自己从10g换成了11g&#xff0c;不过这个没有什么关系&#xff0c;跟oracle的安全设置有关系&#xff0c; 首先从开始菜单找到Net Manager 打开&#xff0c;选择本地&#xff0c;概要文件&#xff0c;下拉列表中选…

IntelliJ IDEA 2021.1更新了好多实用功能介绍

目录 1、WSL 2的支持 2、内置的HTML预览器 3、搜索范围的增强 4、增强的Pull Request支持 5、拆分窗口优化 6、JAVA 16的支持 7、更智能的数据检查 IntelliJ IDEA 2021.1 正式版发布了&#xff0c;这个版本最大的更新内容&#xff0c;就是支持WSL 2和JAVA 16了。而且除了支持WS…

生产三码 黑苹果_黑苹果OC配置工具:OpenCore Configurator v2.15.2.0

一、版本软件版本&#xff1a;OpenCore Configurator 5.15.0.1更新日期&#xff1a;2020年10月14日系统版本&#xff1a;macOS 10.12 Sierra及以上二、OpenCore简介OpenCore是非常优秀的开源软件&#xff0c;旨在通过提供更加通用和模块化的系统来解决Clover带来的限制和问题&a…

电脑硬件常见故障维修技巧

电脑已经成为我们学习日常生活娱乐必不可少的设备了&#xff0c;时间久了难免会遇到小故障&#xff0c;今天我们一起来看下遇到常见的电脑硬件方面的小故障&#xff0c;我们应该如何去自己检测和维修吧。 电脑检测故障我们还是要从电脑的几大硬件开始检查起。 1、CPU 打开机箱查…

面向对象写选项卡、拖拽

js&#xff1a; 面向对象说白了就是一个黑匣子&#xff0c;所谓黑匣子就是知道具体怎么弄但不了解里面运转流程。 面向对象的组成&#xff1a;属性、方法。 属性其实也就是js里面常用的对象&#xff0c;只不过换了一只叫法。 至于方法则是js里面常用的函数。 唯一两者的区别&am…

gdb查看空指针 linux_5 个鲜为人知 GNU 调试器(GDB)技巧

了解如何使用 gdb 的一些鲜为人知的功能来检查和修复代码。-- Tim Waugh(作者)GNU 调试器 (gdb)是一种宝贵的工具&#xff0c;可用于在开发程序时检查正在运行的进程并解决问题。你可以在特定位置(按函数名称、行号等)设置断点、启用和禁用这些断点、显示和更改变量值&#xff…

盘点三个JavaScript案例——实现限时秒杀、定时跳转、改变盒子大小

前言 今天来给大家盘点三个JavaScript案例&#xff0c;分别是实现限时秒杀、定时跳转、改变盒子大小案例&#xff0c;一起来看看吧&#xff01; 一、实现限时秒杀案例 1.在淘宝网中&#xff0c;商家为了促销经常搞一些活动&#xff0c;例如限时秒杀是常见的一种活动&#xff0c…

安装SQL提示重启电脑失败,解决办法

1. 打开注册表&#xff0c; 找到HKEY_LOCAL_MACHINE-->software-->Microsof-->MSSQLServer...统统删掉 2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager目录&#xff0c;在右侧找到PendingFileRenameOperations。删除。 重启电脑&#xff0c;…

华为的鸿蒙系统是海思_死心了!华为鸿蒙系统首款终端确认,不是手机

欢迎点击上面ZAKER关注5 月底谷歌宣布断供华为。随后&#xff0c;华为 " 秘密 " 研发 7 年的自主产权操作系统鸿蒙被公之于众。随着关于鸿蒙系统的消息越来越多&#xff0c;如鸿蒙系统 2012 年便开始规划、鸿蒙系统在多个国家注册商标等。人们除了佩服华为的未雨绸缪…

网络知识:宽带下载网速是30MB/s,经过路由器后仅10MB/s,看完你就懂了

问题&#xff1a;宽带下载网速本是30MB/s&#xff0c;经过路由器后速度仅10MB/s&#xff0c;这是为什么&#xff1f; 宽带下载测速可以到30MB/s&#xff0c;说明外线和光猫还有电脑是没有问题的。目前家庭的组网基本都是光纤入户了&#xff0c;你的测速瓶颈既然不在光猫&#…