国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php中PDO方式實現數據庫的增刪改查

2020-03-22 19:14:21
字體:
來源:轉載
供稿:網友
需要開啟php的pdo支持,php5.1以上版本支持 實現數據庫連接單例化,有三要素 靜態變量、靜態實例化方法、私有html' target='_blank'>構造函數 DPDO.php
class DPDO{ private $DSN; private $DBUser; private $DBPwd; private $longLink; private $pdo; //私有構造函數 防止被直接實例化 private function __construct($dsn, $DBUser, $DBPwd, $longLink = false) { $this- DSN = $dsn; $this- DBUser = $DBUser; $this- DBPwd = $DBPwd; $this- longLink = $longLink; $this- connect(); //私有 空克隆函數 防止被克隆 private function __clone(){} //靜態 實例化函數 返回一個pdo對象 static public function instance($dsn, $DBUser, $DBPwd, $longLink = false){ static $singleton = array();//靜態函數 用于存儲實例化對象 $singIndex = md5($dsn . $DBUser . $DBPwd . $longLink); if (empty($singleton[$singIndex])) { $singleton[$singIndex] = new self($dsn, $DBUser, $DBPwd, $longLink = false); return $singleton[$singIndex]- private function connect(){ try{ if($this- longLink){ $this- pdo = new PDO($this- DSN, $this- DBUser, $this- DBPwd, array(PDO::ATTR_PERSISTENT = true)); }else{ $this- pdo = new PDO($this- DSN, $this- DBUser, $this- DBPwd); $this- pdo- query('SET NAMES UTF-8'); } catch(PDOException $e) { die('Error:' . $e- getMessage() . ' br/ 用于處理字段映射,使用pdo的字段映射,可以有效避免sql注入
//字段關聯數組處理, 主要用于寫入和更新數據、同and 或 or 的查詢條件,產生sql語句和映射字段的數組 public function FDFields($data, $link = ',', $judge = array(), $aliasTable = ''){ $sql = ''; $mapData = array(); foreach($data as $key = $value) { $mapIndex = ':' . ($link != ',' 'c' : '') . $aliasTable . $key; $sql .= ' ' . ($aliasTable $aliasTable . '.' : '') . '`' . $key . '` ' . ($judge[$key] $judge[$key] : '=') . ' ' . $mapIndex . ' ' . $link; $mapData[$mapIndex] = $value; $sql = trim($sql, $link); return array($sql, $mapData); //用于處理單個字段處理 public function FDField($field, $value, $judge = '=', $preMap = 'cn', $aliasTable = '') { $mapIndex = ':' . $preMap . $aliasTable . $field; $sql = ' ' . ($aliasTable $aliasTable . '.' : '') . '`' . $field . '`' . $judge . $mapIndex; $mapData[$mapIndex] = $value; return array($sql, $mapData); //使用剛方法可以便捷產生查詢條件及對應數據數組 public function FDCondition($condition, $mapData) { if(is_string($condition)) { $where = $condition; } else if (is_array($condition)) { if($condition['str']) { if (is_string($condition['str'])) { $where = $condition['str']; } else { return false; if(is_array($condition['data'])) { $link = $condition['link'] $condition['link'] : 'and'; list($conSql, $mapConData) = $this- FDFields($condition['data'], $link, $condition['judge']); if ($conSql) { $where .= ($where ' ' . $link : '') . $conSql; $mapData = array_merge($mapData, $mapConData); return array($where, $mapData); 增刪改查的具體實現DB.php
public function fetch($sql, $searchData = array(), $dataMode = PDO::FETCH_ASSOC, $preType = array(PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY)) { if ($sql) { $sql .= ' limit 1'; $pdoStatement = $this- pdo- prepare($sql, $preType); $pdoStatement- execute($searchData); return $data = $pdoStatement- fetch($dataMode); } else { return false; public function fetchAll($sql, $searchData = array(), $limit = array(0, 10), $dataMode = PDO::FETCH_ASSOC, $preType = array(PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY)) { if ($sql) { $sql .= ' limit ' . (int) $limit[0] . ',' . (intval($limit[1]) 0 intval($limit[1]) : 10); $pdoStatement = $this- pdo- prepare($sql, $preType); $pdoStatement- execute($searchData); return $data = $pdoStatement- fetchAll($dataMode); } else { return false; public function insert($tableName, $data, $returnInsertId = false, $replace = false) { if(!empty($tableName) && count($data) 0){ $sql = $replace 'REPLACE INTO ' : 'INSERT INTO '; list($setSql, $mapData) = $this- FDFields($data); $sql .= $tableName . ' set ' . $setSql; $pdoStatement = $this- pdo- prepare($sql, array(PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY)); $execRet = $pdoStatement- execute($mapData); return $execRet ($returnInsertId $this- pdo- lastInsertId() : $execRet) : false; } else { return false; public function update($tableName, $data, $condition, $mapData = array(), $returnRowCount = true) { if(!empty($tableName) && count($data) 0) { $sql = 'UPDATE ' . $tableName . ' SET '; list($setSql, $mapSetData) = $this- FDFields($data); $sql .= $setSql; $mapData = array_merge($mapData, $mapSetData); list($where, $mapData) = $this- FDCondition($condition, $mapData); $sql .= $where ' WHERE ' . $where : ''; $pdoStatement = $this- pdo- prepare($sql, array(PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY)); $execRet = $pdoStatement- execute($mapData); return $execRet ($returnRowCount $pdoStatement- rowCount() : $execRet) : false; } else { return false; public function delete($tableName, $condition, $mapData = array()) { if(!empty($tableName) && $condition){ $sql = 'DELETE FROM ' . $tableName; list($where, $mapData) = $this- FDCondition($condition, $mapData); $sql .= $where ' WHERE ' . $where : ''; $pdoStatement = $this- pdo- prepare($sql, array(PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY)); $execRet = $pdoStatement- execute($mapData); return $execRet;

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪湖市| 兴隆县| 金湖县| 吴忠市| 嘉义县| 抚宁县| 浦城县| 商水县| 广安市| 和顺县| 长丰县| 新乡县| 揭西县| 华坪县| 南平市| 屏南县| 太谷县| 罗田县| 甘肃省| 万载县| 闻喜县| 于都县| 彰化县| 天水市| 轮台县| 花莲县| 平谷区| 星座| 安泽县| 德化县| 扎兰屯市| 安吉县| 闸北区| 明溪县| 方城县| 溧水县| 十堰市| 十堰市| 罗田县| 临邑县| 南丹县|