亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > CMS > PhpCMS > 正文

【phpcms-v9】model.class.php文件分析-數據模型的基類

2024-09-10 07:15:36
字體:
來源:轉載
供稿:網友
  1. <?php    
  2. /**   
  3.  *  model.class.php 數據模型基類   
  4.  *   
  5.  * @copyright           (C) 2005-2010 PHPCMS   
  6.  * @license             http://www.phpcms.cn/license/   
  7.  * @lastmodify          2010-6-7   
  8.  */   
  9. //路徑:phpcms/libs/classes/model.class.php數據模型基類,所有的phpcms/model/文件夾下的所有model類都繼承于它   
  10. pc_base::load_sys_class('db_factory''', 0);//數據庫工廠類,路徑:phpcms/libs/classes/db_factory.class.php   
  11. class model {   
  12.        
  13.     //數據庫配置   
  14.     protected $db_config = '';   
  15.     //數據庫連接   
  16.     protected $db = '';   
  17.     //調用數據庫的配置項   
  18.     protected $db_setting = 'default';   
  19.     //數據表名   
  20.     protected $table_name = '';   
  21.     //表前綴   
  22.     public  $db_tablepre = '';   
  23.        
  24.     public function __construct() {   
  25.         if (!isset($this->db_config[$this->db_setting])) {   
  26.             $this->db_setting = 'default';   
  27.         }   
  28.         /**   
  29.          * $this->db_config['default']:相當于caches/configs/database.php文件返回的數組   
  30.          * return array (   
  31.                 'default' => array (   
  32.                     'hostname' => 'localhost',           //主機名   
  33.                     'database' => 'phpcms',              //數據庫名   
  34.                     'username' => 'root',                //數據庫用戶名   
  35.                     'password' => '123',             //數據庫密碼   
  36.                     'tablepre' => 'v9_',             //數據表前綴   
  37.                     'charset' => 'utf8',             //數據庫字符編碼   
  38.                     'type' => 'mysql',               //數據庫類型,如:mysql、mysqli、access,根據不同的類型加載不同的數據庫驅動   
  39.                     'debug' => true,   
  40.                     'pconnect' => 0,   
  41.                     'autoconnect' => 0   
  42.                     ),   
  43.             );   
  44.          */   
  45.         $this->table_name = $this->db_config[$this->db_setting]['tablepre'].$this->table_name;   
  46.         $this->db_tablepre = $this->db_config[$this->db_setting]['tablepre'];   
  47.         /**   
  48.          * 1.db_factory工廠類主要采用單利模式返回一個唯一的數據庫連接實例對象   
  49.          * 2.db_factory工廠類在實例化數據庫實例時,會根據當前數據庫的type,加載不同的數據庫驅動,返回不同的數據庫實例對象   
  50.                  * 3.db_factory工廠類通過get_instance方法從caches/configs/database.php文件中獲取數據庫配置信息   
  51.                  */   
  52.         $this->db = db_factory::get_instance($this->db_config)->get_database($this->db_setting);   
  53.     }   
  54.            
  55.     /**   
  56.      * 執行sql查詢   
  57.      * @param $where        查詢條件[例`name`='$name']   
  58.      * @param $data         需要查詢的字段值[例`name`,`gender`,`birthday`]   
  59.      * @param $limit        返回結果范圍[例:10或10,10 默認為空]   
  60.      * @param $order        排序方式    [默認按數據庫默認方式排序]   
  61.      * @param $group        分組方式    [默認為空]   
  62.      * @param $key          返回數組按鍵名排序   
  63.      * @return array        查詢結果集數組   
  64.      */   
  65.     final public function select($where = ''$data = '*'$limit = ''$order = ''$group = ''$key='') {   
  66.         if (is_array($where)) $where = $this->sqls($where);   
  67.         //如果加載的數據庫驅動類型是mysql,則會調用phpcms/libs/classes/mysql.class.php數據庫驅動文件類庫的select方法   
  68.         return $this->db->select($data$this->table_name, $where$limit$order$group$key);   
  69.     }   
  70.    
  71.     /**   
  72.      * 查詢多條數據并分頁   
  73.      * @param $where   
  74.      * @param $order   
  75.      * @param $page   
  76.      * @param $pagesize   
  77.      * @return unknown_type   
  78.      */   
  79.     final public function listinfo($where = ''$order = ''$page = 1, $pagesize = 20, $key=''$setpages = 10,$urlrule = '',$array = array()) {   
  80.         $where = to_sqls($where);   
  81.         $this->number = $this->count($where);   
  82.         $page = max(intval($page), 1);   
  83.         $offset = $pagesize*($page-1);   
  84.         $this->pages = pages($this->number, $page$pagesize$urlrule$array$setpages);   
  85.         $array = array();   
  86.         if ($this->number > 0) {   
  87.             return $this->select($where'*'"$offset, $pagesize"$order''$key);   
  88.         } else {   
  89.             return array();   
  90.         }   
  91.     }   
  92.    
  93.     /**   
  94.      * 獲取單條記錄查詢   
  95.      * @param $where        查詢條件   
  96.      * @param $data         需要查詢的字段值[例`name`,`gender`,`birthday`]   
  97.      * @param $order        排序方式    [默認按數據庫默認方式排序]   
  98.      * @param $group        分組方式    [默認為空]   
  99.      * @return array/null   數據查詢結果集,如果不存在,則返回空   
  100.      */   
  101.     final public function get_one($where = ''$data = '*'$order = ''$group = '') {   
  102.         if (is_array($where)) $where = $this->sqls($where);   
  103.         //如果加載的數據庫驅動類型是mysql,則會調用phpcms/libs/classes/mysql.class.php數據庫驅動文件類庫的get_one方法   
  104.         return $this->db->get_one($data$this->table_name, $where$order$group);   
  105.     }   
  106.        
  107.     /**   
  108.      * 直接執行sql查詢   
  109.      * @param $sql                          查詢sql語句   
  110.      * @return  boolean/query resource      如果為查詢語句,返回資源句柄,否則返回true/false   
  111.      */   
  112.     final public function query($sql) {   
  113.         $sql = str_replace('phpcms_'$this->db_tablepre, $sql);   
  114.         //如果加載的數據庫驅動類型是mysql,則會調用phpcms/libs/classes/mysql.class.php數據庫驅動文件類庫的query方法   
  115.         return $this->db->query($sql);   
  116.     }   
  117.        
  118.     /**   
  119.      * 執行添加記錄操作   
  120.      * @param $data         要增加的數據,參數為數組。數組key為字段值,數組值為數據取值   
  121.      * @param $return_insert_id 是否返回新建ID號   
  122.      * @param $replace 是否采用 replace into的方式添加數據   
  123.      * @return boolean   
  124.      */   
  125.     final public function insert($data$return_insert_id = false, $replace = false) {   
  126.         //如果加載的數據庫驅動類型是mysql,則會調用phpcms/libs/classes/mysql.class.php數據庫驅動文件類庫的insert方法   
  127.         return $this->db->insert($data$this->table_name, $return_insert_id$replace);   
  128.     }   
  129.        
  130.     /**   
  131.      * 獲取最后一次添加記錄的主鍵號   
  132.      * @return int    
  133.      */   
  134.     final public function insert_id() {   
  135.         //如果加載的數據庫驅動類型是mysql,則會調用phpcms/libs/classes/mysql.class.php數據庫驅動文件類庫的insert_id方法   
  136.         return $this->db->insert_id();   
  137.     }   
  138.        
  139.     /**   
  140.      * 執行更新記錄操作   
  141.      * @param $data         要更新的數據內容,參數可以為數組也可以為字符串,建議數組。   
  142.      *                      為數組時數組key為字段值,數組值為數據取值   
  143.      *                      為字符串時[例:`name`='phpcms',`hits`=`hits`+1]。   
  144.      *                      為數組時[例: array('name'=>'phpcms','password'=>'123456')]   
  145.      *                      數組的另一種使用array('name'=>'+=1', 'base'=>'-=1');程序會自動解析為`name` = `name` + 1, `base` = `base` - 1   
  146.      * @param $where        更新數據時的條件,可為數組或字符串   
  147.      * @return boolean   
  148.      */   
  149.     final public function update($data$where = '') {   
  150.         if (is_array($where)) $where = $this->sqls($where);   
  151.         //如果加載的數據庫驅動類型是mysql,則會調用phpcms/libs/classes/mysql.class.php數據庫驅動文件類庫的update方法   
  152.         return $this->db->update($data$this->table_name, $where);   
  153.     }   
  154.        
  155.     /**   
  156.      * 執行刪除記錄操作   
  157.      * @param $where        刪除數據條件,不充許為空。   
  158.      * @return boolean   
  159.      */   
  160.     final public function delete($where) {   
  161.         if (is_array($where)) $where = $this->sqls($where);   
  162.         //如果加載的數據庫驅動類型是mysql,則會調用phpcms/libs/classes/mysql.class.php數據庫驅動文件類庫的delete方法   
  163.         return $this->db->delete($this->table_name, $where);   
  164.     }   
  165.        
  166.     /**   
  167.      * 計算記錄數   
  168.      * @param string/array $where 查詢條件   
  169.      */   
  170.     final public function count($where = '') {   
  171.         $r = $this->get_one($where"COUNT(*) AS num");   
  172.         return $r['num'];   
  173.     }   
  174.        
  175.     /**   
  176.      * 將數組轉換為SQL語句   
  177.      * @param array $where 要生成的數組   
  178.      * @param string $font 連接串。   
  179.      */   
  180.     final public function sqls($where$font = ' AND ') {   
  181.         if (is_array($where)) {   
  182.             $sql = '';   
  183.             foreach ($where as $key=>$val) {   
  184.                 $sql .= $sql ? " $font `$key` = '$val' " : " `$key` = '$val'";   
  185.             }   
  186.             return $sql;   
  187.         } else {   
  188.             return $where;   
  189.         }   
  190.     }   
  191.        
  192.     /**   
  193.      * 獲取最后數據庫操作影響到的條數   
  194.      * @return int   
  195.      */   
  196.     final public function affected_rows() {   
  197.         //如果加載的數據庫驅動類型是mysql,則會調用phpcms/libs/classes/mysql.class.php數據庫驅動文件類庫的affected_rows方法   
  198.         return $this->db->affected_rows();   
  199.     }   
  200.        
  201.     /**   
  202.      * 獲取數據表主鍵   
  203.      * @return array   
  204.      */   
  205.     final public function get_primary() {   
  206.         //如果加載的數據庫驅動類型是mysql,則會調用phpcms/libs/classes/mysql.class.php數據庫驅動文件類庫的get_primary方法   
  207.         return $this->db->get_primary($this->table_name);   
  208.     }   
  209.        
  210.     /**   
  211.      * 獲取表字段   
  212.      * @param string $table_name    表名   
  213.      * @return array   
  214.      */   
  215.     final public function get_fields($table_name = '') {   
  216.         if (emptyempty($table_name)) {   
  217.             $table_name = $this->table_name;   
  218.         } else {   
  219.             $table_name = $this->db_tablepre.$table_name;   
  220.         }   
  221.         //如果加載的數據庫驅動類型是mysql,則會調用phpcms/libs/classes/mysql.class.php數據庫驅動文件類庫的get_fields方法   
  222.         return $this->db->get_fields($table_name);   
  223.     }   
  224.        
  225.     /**   
  226.      * 檢查表是否存在   
  227.      * @param $table 表名   
  228.      * @return boolean   
  229.      */   
  230.     final public function table_exists($table){   
  231.         return $this->db->table_exists($this->db_tablepre.$table);   
  232.     }   
  233.        
  234.     /**   
  235.      * 檢查字段是否存在   
  236.      * @param $field 字段名   
  237.      * @return boolean   
  238.      */   
  239.     public function field_exists($field) {   
  240.         $fields = $this->db->get_fields($this->table_name);   
  241.         return array_key_exists($field$fields);   
  242.     }  //Vevb.com 
  243.        
  244.     final public function list_tables() {   
  245.         return $this->db->list_tables();   
  246.     }   
  247.     /**   
  248.      * 返回數據結果集   
  249.      * @param $query (mysql_query返回值)   
  250.      * @return array   
  251.      */   
  252.     final public function fetch_array() {   
  253.         $data = array();   
  254.         while($r = $this->db->fetch_next()) {   
  255.             $data[] = $r;          
  256.         }   
  257.         return $data;   
  258.     }   
  259.        
  260.     /**   
  261.      * 返回數據庫版本號   
  262.      */   
  263.     final public function version() {   
  264.         return $this->db->version();   
  265.     }   
  266. }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲香蕉伊综合在人在线视看| 亚洲福利视频在线| 亚洲一级黄色av| 国产精品久久久久久久久影视| 国产亚洲精品激情久久| 久久这里有精品视频| 亚洲成人久久网| 日韩中文字幕视频在线| 成人免费视频网| 久热爱精品视频线路一| 精品久久久久久| 欧美一级片免费在线| 日韩乱码在线视频| 亚州精品天堂中文字幕| 欧美成人免费全部观看天天性色| 久久久噜噜噜久久| 亚洲精品自拍第一页| 成人激情在线播放| 久久视频这里只有精品| 欧美午夜激情视频| 久久精视频免费在线久久完整在线看| 综合av色偷偷网| 久久亚洲精品国产亚洲老地址| 自拍偷拍亚洲在线| 亚洲成成品网站| 久久久视频精品| 欧美大片va欧美在线播放| 日本精品性网站在线观看| 久久69精品久久久久久久电影好| 国产99久久精品一区二区 夜夜躁日日躁| 91久久久久久久久久久久久| 欧美视频在线看| 久久在线免费观看视频| 91成人在线观看国产| 国产成人自拍视频在线观看| 91精品免费视频| 国产一区二区丝袜高跟鞋图片| 国产精品一香蕉国产线看观看| 亚洲精品乱码久久久久久金桔影视| 午夜精品一区二区三区在线| 久久久久久高潮国产精品视| 免费成人高清视频| 欧洲美女7788成人免费视频| 日韩精品一区二区视频| 中文字幕亚洲色图| 一本色道久久88亚洲综合88| 国产精品成人观看视频国产奇米| 亚洲最大激情中文字幕| 亚洲国产精品999| 久久激情视频免费观看| 欧美视频第一页| 欧美激情在线观看视频| 久久婷婷国产麻豆91天堂| 欧美专区日韩视频| 亚洲成人激情小说| 国产玖玖精品视频| 欧美日韩福利在线观看| 亚洲二区中文字幕| 欧美精品电影免费在线观看| 亚洲天堂日韩电影| 久久精品国产电影| 亚洲成成品网站| 成人免费在线视频网址| 欧美天天综合色影久久精品| 欧美午夜视频在线观看| 国产成人精品一区| 亚洲欧美三级伦理| 国产精品久久久久久一区二区| 午夜精品在线视频| 欧美午夜激情小视频| 久久久人成影片一区二区三区| 欧美性xxxxxxx| 欧美日韩性视频| 久久777国产线看观看精品| 国产精品高清免费在线观看| 欧美成人免费全部观看天天性色| 午夜精品久久久久久久久久久久久| 国产一区二区精品丝袜| 国产美女久久精品香蕉69| 大胆人体色综合| 91精品国产综合久久香蕉| 97精品视频在线| 日韩av电影在线免费播放| 久久免费视频观看| 色噜噜狠狠色综合网图区| 一区二区在线视频播放| 国产精品福利网| 国产精品久久久久久亚洲影视| 精品亚洲一区二区三区在线播放| 亚洲欧洲日产国产网站| 亚洲国产精品系列| 九九视频这里只有精品| 亚洲一区二区免费| 精品少妇v888av| 日韩中文视频免费在线观看| 亚洲男人天堂九九视频| 在线免费观看羞羞视频一区二区| 国内外成人免费激情在线视频网站| 国产成人自拍视频在线观看| 国产精品入口免费视| 国产成人精品亚洲精品| 精品亚洲男同gayvideo网站| 91久久在线播放| 国产精品永久免费观看| 亚洲自拍欧美色图| 久久久日本电影| 精品无人区太爽高潮在线播放| 欧美精品在线网站| 九九热r在线视频精品| 久久久久久国产精品| 欧美性高潮在线| 国产亚洲精品va在线观看| 久久久免费精品| 欧美日韩亚洲国产一区| 国产精品免费一区| 91国产中文字幕| 国产欧美一区二区白浆黑人| 亚洲国产精品一区二区三区| 国产精品都在这里| 国产日韩欧美黄色| 欧美中文字幕第一页| 日韩成人黄色av| 66m—66摸成人免费视频| 久久久久久久激情视频| 色噜噜久久综合伊人一本| 91视频国产精品| 久久精品91久久久久久再现| 欧美在线视频网站| 久久视频中文字幕| 欧美激情在线有限公司| 色爱精品视频一区| 亚洲欧洲激情在线| 亚洲高清免费观看高清完整版| 国产成人精品免费久久久久| 中文字幕亚洲二区| 精品五月天久久| 久久国产加勒比精品无码| 欧美日韩亚洲91| 国产aⅴ夜夜欢一区二区三区| 国产精品久久久久久影视| 97在线观看视频| 欧美日韩免费一区| 久久久女人电视剧免费播放下载| 国产成人免费91av在线| 91成人天堂久久成人| 国自产精品手机在线观看视频| 狠狠操狠狠色综合网| 人体精品一二三区| 日韩av网站在线| 日韩久久免费电影| 欧美日韩精品在线观看| 久久久久久久久久国产精品| 亚洲91精品在线观看| 欧美老肥婆性猛交视频| 色阁综合伊人av| 97视频在线观看免费| 人妖精品videosex性欧美| 欧美久久久精品| 91丝袜美腿美女视频网站| 亚洲欧美第一页| 亚洲毛片在线观看.| 精品一区二区三区电影| 国产精品看片资源| 成人免费视频网|