PHP PDO類
阿新 • • 發佈:2018-04-04
執行sql AR body mode func int message for isarray
<?php //數據庫連接類,不建議直接使用DB,而是對DB封裝一層 //這個類不會被汙染,不會被直接調用 class DB { //pdo對象 private $_pdo = null; //用於存放實例化的對象 static private $_instance = null; //公共靜態方法獲取實例化的對象 static protected function getInstance() { if (!(self::$_instance instanceof self)) { self::$_instance = new self(); } return self::$_instance; } //私有克隆 private function __clone() {} //私有構造 private function __construct() { try { $this->_pdo = new PDO(DB_DNS, DB_USER, DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND=>‘SET NAMES ‘.DB_CHARSET));$this->_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { exit($e->getMessage()); } } //新增 protected function add($_tables, Array $_addData) { $_addFields = array();$_addValues = array(); foreach ($_addData as $_key=>$_value) { $_addFields[] = $_key; $_addValues[] = $_value; } $_addFields = implode(‘,‘, $_addFields); $_addValues = implode("‘,‘", $_addValues); $_sql = "INSERT INTO $_tables[0] ($_addFields) VALUES (‘$_addValues‘)"; return $this->execute($_sql)->rowCount(); } //修改 protected function update($_tables, Array $_param, Array $_updateData) { $_where = $_setData = ‘‘; foreach ($_param as $_key=>$_value) { $_where .= $_value.‘ AND ‘; } $_where = ‘WHERE ‘.substr($_where, 0, -4); foreach ($_updateData as $_key=>$_value) { if (Validate::isArray($_value)) { $_setData .= "$_key=$_value[0],"; } else { $_setData .= "$_key=‘$_value‘,"; } } $_setData = substr($_setData, 0, -1); $_sql = "UPDATE $_tables[0] SET $_setData $_where"; return $this->execute($_sql)->rowCount(); } //驗證一條數據 protected function isOne($_tables, Array $_param) { $_where = ‘‘; foreach ($_param as $_key=>$_value) { $_where .=$_value.‘ AND ‘; } $_where = ‘WHERE ‘.substr($_where, 0, -4); $_sql = "SELECT id FROM $_tables[0] $_where LIMIT 1"; return $this->execute($_sql)->rowCount(); } //刪除 protected function delete($_tables, Array $_param) { $_where = ‘‘; foreach ($_param as $_key=>$_value) { $_where .= $_value.‘ AND ‘; } $_where = ‘WHERE ‘.substr($_where, 0, -4); $_sql = "DELETE FROM $_tables[0] $_where LIMIT 1"; return $this->execute($_sql)->rowCount(); } //查詢 protected function select($_tables, Array $_fileld, Array $_param = array()) { $_limit = $_order = $_where = $_like = ‘‘; if (Validate::isArray($_param) && !Validate::isNullArray($_param)) { $_limit = isset($_param[‘limit‘]) ? ‘LIMIT ‘.$_param[‘limit‘] : ‘‘; $_order = isset($_param[‘order‘]) ? ‘ORDER BY ‘.$_param[‘order‘] : ‘‘; if (isset($_param[‘where‘])) { foreach ($_param[‘where‘] as $_key=>$_value) { $_where .= $_value.‘ AND ‘; } $_where = ‘WHERE ‘.substr($_where, 0, -4); } if (isset($_param[‘like‘])) { foreach ($_param[‘like‘] as $_key=>$_value) { $_like = "WHERE $_key LIKE ‘%$_value%‘"; } } } $_selectFields = implode(‘,‘, $_fileld); $_table = isset($_tables[1]) ? $_tables[0].‘,‘.$_tables[1] : $_tables[0]; $_sql = "SELECT $_selectFields FROM $_table $_where $_like $_order $_limit"; $_stmt = $this->execute($_sql); $_result = array(); while (!!$_objs = $_stmt->fetchObject()) { $_result[] = $_objs; } return Tool::setHtmlString($_result); } //總記錄 protected function total($_tables, Array $_param = array()) { $_where = ‘‘; if (isset($_param[‘where‘])) { foreach ($_param[‘where‘] as $_key=>$_value) { $_where .= $_value.‘ AND ‘; } $_where = ‘WHERE ‘.substr($_where, 0, -4); } $_sql = "SELECT COUNT(*) as count FROM $_tables[0] $_where"; $_stmt = $this->execute($_sql); return $_stmt->fetchObject()->count; } //得到下一個ID protected function nextId($_tables) { $_sql = "SHOW TABLE STATUS LIKE ‘$_tables[0]‘"; $_stmt = $this->execute($_sql); return $_stmt->fetchObject()->Auto_increment; } //執行SQL private function execute($_sql) { try { $_stmt = $this->_pdo->prepare($_sql); $_stmt->execute(); } catch (PDOException $e) { exit(‘SQL語句:‘.$_sql.‘<br />錯誤信息:‘.$e->getMessage()); } return $_stmt; } } ?>
PHP PDO類