1 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:' . $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 }