php 数据库类
2018-06-22 04:58:00来源:未知 阅读 ()
<?php /** * 对Yii2数据封装 * @author nike@youfumama.com * @date 2017-03-08 * 抽象类不能被实例化 * eg1: select use 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|insert use 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---------------------- }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- PHP写UltraEdit插件脚本实现方法 2020-03-29
- php 带逗号千位符数字的处理方法 2020-03-28
- PHP三元运算符的结合性介绍 2020-03-28
- PHP静态延迟绑定和普通静态效率的对比 2020-03-28
- 基于php流程控制语句和循环控制语句 2020-03-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash