zoukankan      html  css  js  c++  java
  • php实现简单链式操作mysql数据库类

      1 <?php
      2 $dbConfig = require_once(dirname(__FILE__).'/config.php');
      3  
      4 class Db{
      5     public $conn;
      6     private $host = null;
      7     private $user     = null;
      8     private $password = null;
      9     private $database = null;
     10     private $tablename = null;
     11     private $dbConfig = null;
     12     private $sql = [
     13         'where'   => null,
     14         'orderBy' => null,
     15         'limit'   => null,
     16     ];
     17  
     18  
     19     public function __construct($tablename = '') {
     20         global $dbConfig;
     21         $this->dbConfig = $dbConfig;
     22         $this->tablename = $dbConfig['DB_PREFIX'].$tablename;
     23         $this->user = $dbConfig['DB_USER'];
     24         $this->host = $dbConfig['DB_HOST'];
     25         $this->password = $dbConfig['DB_PWD'];
     26         $this->database = $dbConfig['DB_NAME'];
     27         $dsn = 'mysql:dbname='.$this->database.';host='.$this->host.';port=3306';
     28         try {
     29             $this->conn = new PDO($dsn, $this->user, $this->password); // also allows an extra parameter of configuration
     30         } catch(PDOException $e) {
     31             die('Could not connect to the database:<br/>' . $e);
     32         }
     33     }
     34  
     35     public function table($tablename) {
     36         $this->tablename = $this->dbConfig['DB_PREFIX'].$tablename;
     37         return $this;
     38     }
     39  
     40     public function getAll($fields = '*') {
     41         $querySql = sprintf("SELECT %s FROM %s", $fields, $this->tablename);
     42         if(!empty($this->sql['where'])) {
     43             $querySql .= ' WHERE ' . $this->sql['where']; 
     44         }
     45         if(!empty($this->sql['orderBy'])) {
     46             $querySql .= ' ORDER BY ' . $this->sql['orderBy']; 
     47         }
     48         if(!empty($this->sql['limit'])) {
     49             $querySql .= ' LIMIT ' . $this->sql['limit']; 
     50         }
     51         return $this->query($querySql);
     52     }
     53  
     54     public function getOne($fields = '*') {
     55         $result = $this->getAll($fields);
     56         return isset($result[0]) ? $result[0] : null;
     57     }
     58  
     59     public function insert($data) {
     60         foreach ($data as $key => &$value) {
     61             $value = addslashes($value);
     62         }
     63         $keys = "`".implode('`,`', array_keys($data))."`";
     64         $values = "'".implode("','", array_values($data))."'";
     65         $querySql = sprintf("INSERT INTO %s ( %s ) VALUES ( %s )", $this->tablename, $keys, $values);
     66         return $this->query($querySql);
     67     }
     68  
     69     public function delete() {
     70         $querySql = sprintf("DELETE FROM %s WHERE ( %s )", $this->tablename, $this->sql['where']);
     71         return $this->query($querySql);
     72     }
     73  
     74     public function update($data) {
     75         $updateFields = [];
     76         foreach ($data as $key => $value) {
     77             $up_value = addslashes($value);
     78             $updateFields[] = "`$key`='$up_value'";
     79         }
     80         $updateFields = implode(',', $updateFields);
     81         $querySql = sprintf("UPDATE %s SET %s", $this->tablename, $updateFields);
     82  
     83         if(!empty($this->sql['where'])) {
     84             $querySql .= ' WHERE ' . $this->sql['where']; 
     85         }
     86  
     87         return $this->query($querySql);
     88     }
     89  
     90     public function query($querySql) {
     91         $querystr = strtolower(trim(substr($querySql,0,6)));
     92         $stmt = $this->conn->prepare($querySql);
     93         $ret = $stmt->execute();
     94  
     95         if(!$ret) print_r($stmt->errorInfo());
     96  
     97         if($querystr == 'select') {
     98             $retData = $stmt->fetchAll(PDO::FETCH_ASSOC);
     99             return $retData;
    100         }elseif($ret && $querystr == 'insert') {
    101             return $this->conn->lastInsertId();
    102         }else{
    103             return $ret;
    104         }
    105     }
    106  
    107  
    108     public function limit($limit, $limitCount = null) {
    109         if(!$limitCount) {
    110             $this->sql['limit'] = $limit;
    111         }else{
    112             $this->sql['limit'] = $limit .','. $limitCount;
    113         }
    114         return $this;
    115     }
    116  
    117     public function orderBy($orderBy) {
    118         $this->sql['orderBy'] = $orderBy;
    119         return $this;
    120     }
    121  
    122     public function close() {
    123         return $this->conn = null;
    124     }
    125  
    126     public function where($where) {
    127         if(!is_array($where)) {
    128             return null;
    129         }
    130         $crondsArr = [];
    131         foreach ($where as $key => $value) {
    132             $fieldValue = $value;
    133             if(is_array($fieldValue)) {
    134                 $crondsArr[] = "$key ".$fieldValue[0]. ' ' . addslashes($fieldValue[1]);
    135             }else{
    136                 $fieldValue = addslashes($fieldValue);
    137                 $crondsArr[] = "$key='$fieldValue'";
    138             }
    139         }
    140         $this->sql['where'] = implode(' AND ', $crondsArr);
    141  
    142         return $this;
    143     }
    144     
    145 }
  • 相关阅读:
    洛谷
    洛谷
    洛谷
    51nod
    洛谷
    洛谷
    51nod
    洛谷
    2019五一训练记录
    2019.5.4备战省赛组队训练赛第十九场
  • 原文地址:https://www.cnblogs.com/chbyl/p/10199151.html
Copyright © 2011-2022 走看看