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.pswp.cn/news/270739.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270739.shtml
英文地址,請注明出處:http://en.pswp.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;你的測速瓶頸既然不在光貓&#…