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

首頁 > 語言 > PHP > 正文

PHP的PDO常用類庫實例分析

2024-05-04 23:44:52
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP的PDO常用類庫,結合實例形式分析了PDO類庫常見的連接,初始化及增刪改查等操作技巧,需要的朋友可以參考下
 

本文實例講述了PHP的PDO常用類庫。分享給大家供大家參考,具體如下:

1、Db.class.php 連接數據庫

<?php// 連接數據庫class Db {  static public function getDB() {    try {      $pdo = new PDO(DB_DSN, DB_USER, DB_PWD);      $pdo->setAttribute(PDO::ATTR_PERSISTENT, true); // 設置數據庫連接為持久連接      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 設置拋出錯誤      $pdo->setAttribute(PDO::ATTR_ORACLE_NULLS, true); // 設置當字符串為空轉換為 SQL 的 NULL      $pdo->query('SET NAMES utf8'); // 設置數據庫編碼    } catch (PDOException $e) {      exit('數據庫連接錯誤,錯誤信息:'. $e->getMessage());    }    return $pdo;  }}?>

2、Model.class.php 數據庫操作類

<?php/*** 數據庫操作類庫* author Lee.* Last modify $Date: 2012-1-19 13:59;04 $*/class M {  private $_db; //數據庫句柄  public $_sql; //SQL語句  /**   * 構造方法   */  public function __construct() {    $this->_db = Db::getDB();  }  /**   * 數據庫添加操作   * @param string $tName 表名   * @param array $field 字段數組   * @param array $val 值數組   * @param bool $is_lastInsertId 是否返回添加ID   * @return int 默認返回成功與否,$is_lastInsertId 為true,返回添加ID   */  public function insert($tName, $fields, $vals, $is_lastInsertId=FALSE) {    try {      if (!is_array($fields) || !is_array($vals))        exit($this->getError(__FUNCTION__, __LINE__));      $fields = $this->formatArr($fields);      $vals = $this->formatArr($vals, false);      $tName = $this->formatTabName($tName);      $this->_sql = "INSERT INTO {$tName} ({$fields}) VALUES ({$vals})";      if (!$is_lastInsertId) {        $row = $this->_db->exec($this->_sql);        return $row;      } else {        $this->_db->exec($this->_sql);        $lastId = (int)$this->_db->lastInsertId();        return $lastId;      }    } catch (PDOException $e) {      exit($e->getMessage());    }  }  /**   * 數據庫修改操作   * @param string $tName 表名   * @param array $field 字段數組   * @param array $val 值數組   * @param string $condition 條件   * @return int 受影響的行數   */  public function update($tName, $fieldVal, $condition) {    try {      if (!is_array($fieldVal) || !is_string($tName) || !is_string($condition))        exit($this->getError(__FUNCTION__, __LINE__));      $tName = $this->formatTabName($tName);      $upStr = '';      foreach ($fieldVal as $k=>$v) {        $upStr .= '`'.$k . '`=' . '/'' . $v . '/'' . ',';      }      $upStr = rtrim($upStr, ',');      $this->_sql = "UPDATE {$tName} SET {$upStr} WHERE {$condition}";      $row = $this->_db->exec($this->_sql);      return $row;    } catch (PDOException $e) {      exit($e->getMessage());    }  }  /**   * 數據庫刪除操作(注:必須添加 where 條件)   * @param string $tName 表名   * @param string $condition 條件   * @return int 受影響的行數   */  public function del($tName, $condition) {    try {      if (!is_string($tName) || !is_string($condition))        exit($this->getError(__FUNCTION__, __LINE__));      $tName= $this->formatTabName($tName);      $this->_sql = "DELETE FROM {$tName} WHERE {$condition}";      $row = $this->_db->exec($this->_sql);      return $row;    } catch (PDOException $e) {      exit($e->getMessage());    }  }  /**   * 返回表總個數   * @param string $tName 表名   * @param string $condition 條件   * @return int   */  public function total($tName, $condition='') {    try {      if (!is_string($tName))        exit($this->getError(__FUNCTION__, __LINE__));      $tName = $this->formatTabName($tName);      $this->_sql = "SELECT COUNT(*) AS total FROM {$tName}" .      ($condition=='' ? '' : ' WHERE ' . $condition);      $re = $this->_db->query($this->_sql);      foreach ($re as $v) {        $total = $v['total'];      }      return (int)$total;    } catch (PDOException $e) {      exit($e->getMessage());    }  }  /**   * 數據庫刪除多條數據   * @param string $tName 表名   * @param string $field 依賴字段   * @param array $ids 刪除數組   * @return int 受影響的行數   */  public function delMulti($tName, $field, $ids) {    try {      if (!is_string($tName) || !is_array($ids))        exit($this->getError(__FUNCTION__, __LINE__));      $delStr = '';      $tName = $this->formatTabName($tName);      $field = $this->formatTabName($field);      foreach ($ids as $v) {        $delStr .= $v . ',';      }      $delStr = rtrim($delStr, ',');      $this->_sql = "DELETE FROM {$tName} WHERE {$field} IN ({$delStr})";      $row = $this->_db->exec($this->_sql);      return $row;    } catch (PDOException $e) {      exit($e->getMessage());    }  }  /**   * 獲取表格的最后主鍵(注:針對 INT 類型)   * @param string $tName 表名   * @return int   */  public function insertId($tName) {    try {      if (!is_string($tName))        exit($this->getError(__FUNCTION__, __LINE__));      $this->_sql = "SHOW TABLE STATUS LIKE '{$tName}'";      $result = $this->_db->query($this->_sql);      $insert_id = 0;      foreach ($result as $v) {        $insert_id = $v['Auto_increment'];      }      return (int)$insert_id;    } catch (PDOException $e) {      exit($e->getMessage());    }  }  /**   * 檢查數據是否已經存在(依賴條件)   * @param string $tName 表名   * @param string $field 依賴的字段   * @return bool   */  public function exists($tName, $condition) {    try {      if (!is_string($tName) || !is_string($condition))        exit($this->getError(__FUNCTION__, __LINE__));      $tName = $this->formatTabName($tName);      $this->_sql = "SELECT COUNT(*) AS total FROM {$tName} WHERE {$condition}";      $result = $this->_db->query($this->_sql);      foreach ($result as $v) {         $b = $v['total'];      }      if ($b) {        return true;      } else {        return false;      }    } catch (PDOException $e) {      exit($e->getMessage());    }  }  /**   * 檢查數據是否已經存在(依賴 INT 主鍵)   * @param string $tName 表名   * @param string $primary 主鍵   * @param int $id 主鍵值   * @return bool   */  public function existsByPK($tName, $primary, $id) {    try {      if (!is_string($tName) || !is_string($primary)      || !is_int($id))        exit($this->getError(__FUNCTION__, __LINE__));      $tName = $this->formatTabName($tName);      $this->_sql = "SELECT COUNT(*) AS total FROM {$tName} WHERE {$primary} = ". $id;      $result = $this->_db->query($this->_sql);      foreach ($result as $v) {         $b = $v['total'];      }      if ($b) {        return true;      } else {        return false;      }    } catch (PDOException $e) {      exit($e->getMessage());    }  }  /**   * 預處理刪除(注:針對主鍵為 INT 類型,推薦使用)   * @param string $tName 表名   * @param string $primary 主鍵字段   * @param int or array or string $ids 如果是刪除一條為 INT,多條為 array,刪除一個范圍為 string   * @return int 返回受影響的行數   */  public function delByPK($tName, $primary, $ids, $mult=FALSE) {    try {      if (!is_string($tName) || !is_string($primary)      || (!is_int($ids) && !is_array($ids) && !is_string($ids))      || !is_bool($mult)) exit($this->getError(__FUNCTION__, __LINE__));      $tName = $this->formatTabName($tName);      $stmt = $this->_db->prepare("DELETE FROM {$tName} WHERE {$primary}=?");      if (!$mult) {        $stmt->bindParam(1, $ids);        $row = $stmt->execute();      } else {        if (is_array($ids)) {          $row = 0;          foreach ($ids as $v) {            $stmt->bindParam(1, $v);            if ($stmt->execute()) {              $row++;            }          }        } elseif (is_string($ids)) {          if (!strpos($ids, '-'))            exit($this->getError(__FUNCTION__, __LINE__));          $split = explode('-', $ids);          if (count($split)!=2 || $split[0]>$split[1])            exit($this->getError(__FUNCTION__, __LINE__));          $i = null;          $count = $split[1]-$split[0]+1;          for ($i=0; $i<$count; $i++) {            $idArr[$i] = $split[0]++;          }          $idStr = '';          foreach ($idArr as $id) {            $idStr .= $id . ',';          }          $idStr = rtrim($idStr, ',');          $this->_sql ="DELETE FROM {$tName} WHERE {$primary} in ({$idStr})";          $row = $this->_db->exec($this->_sql);        }      }      return $row;    } catch (PDOException $e) {      exit($e->getMessage());    }  }  /**   * 返回單個字段數據或單條記錄   * @param string $tName 表名   * @param string $condition 條件   * @param string or array $fields 返回的字段,默認是*   * @return string || array   */  public function getRow($tName, $condition='', $fields="*") {    try {      if (!is_string($tName) || !is_string($condition)      || !is_string($fields) || empty($fields))         exit($this->getError(__FUNCTION__, __LINE__));      $tName = $this->formatTabName($tName);      $this->_sql = "SELECT {$fields} FROM {$tName} ";      $this->_sql .= ($condition=='' ? '' : "WHERE {$condition}") . " LIMIT 1";      $sth = $this->_db->prepare($this->_sql);      $sth->execute();      $result = $sth->fetch(PDO::FETCH_ASSOC);      if ($fields === '*') {        return $result;      } else {        return $result[$fields];      }    } catch (PDOException $e) {      exit($e->getMessage());    }  }  /**   * 返回多條數據   * @param string $tName 表名   * @param string $fields 返回字段,默認為*   * @param string $condition 條件   * @param string $order 排序   * @param string $limit 顯示個數   * @return PDOStatement   */  public function getAll($tName, $fields='*', $condition='', $order='', $limit='') {    try {      if (!is_string($tName) || !is_string($fields)      || !is_string($condition) || !is_string($order)      || !is_string($limit))        exit($this->getError(__FUNCTION__, __LINE__));      $tName = $this->formatTabName($tName);      $fields = ($fields=='*' || $fields=='') ? '*' : $fields;      $condition = $condition=='' ? '' : " WHERE ". $condition ;      $order = $order=='' ? '' : " ORDER BY ". $order;      $limit = $limit=='' ? '' : " LIMIT ". $limit;      $this->_sql = "SELECT {$fields} FROM {$tName} {$condition} {$order} {$limit}";      $sth = $this->_db->prepare($this->_sql);      $sth->execute();      $result = $sth->fetchAll(PDO::FETCH_ASSOC);      return $result;    } catch (PDOException $e) {      exit($e->getMessage());    }  }  /**   * 格式化數組(表結構和值)   * @param array $field   * @param bool $isField   * @return string   */  private function formatArr($field, $isField=TRUE) {    if (!is_array($field)) exit($this->getError(__FUNCTION__, __LINE__));    $fields = '';    if ($isField) {      foreach ($field as $v) {        $fields .= '`'.$v.'`,';      }    } else {      foreach ($field as $v) {        $fields .= '/''.$v.'/''.',';      }    }    $fields = rtrim($fields, ',');    return $fields;  }  /**   * 格式化問號   * @param int $count 數量   * @return string 返回格式化后的字符串   */  private function formatMark($count) {    $str = '';    if (!is_int($count)) exit($this->getError(__FUNCTION__, __LINE__));    if ($count==1) return '?';    for ($i=0; $i<$count; $i++) {      $str .= '?,';    }    return rtrim($str, ',');  }  /**   * 錯誤提示   * @param string $fun   * @return string   */  private function getError($fun, $line) {    return __CLASS__ . '->' . $fun . '() line<font color="red">'. $line .'</font> ERROR!';  }  /**   * 處理表名   * @param string $tName   * @return string   */  private function formatTabName($tName) {    return '`' . trim($tName, '`') . '`';  }  /**   * 析構方法   */  public function __destruct() {    $this->_db = null;  }}
 


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲美女av网站| 色噜噜狠狠狠综合曰曰曰88av| 黑人巨大精品欧美一区二区三区| 激情亚洲一区二区三区四区| 7m精品福利视频导航| 97视频在线观看成人| 91天堂在线观看| 97人洗澡人人免费公开视频碰碰碰| 国产精品青草久久久久福利99| 欧美日本黄视频| 欧美激情精品久久久久久久变态| 亚洲最大福利视频网站| 成人国产精品色哟哟| 欧美大尺度激情区在线播放| 国内偷自视频区视频综合| 欧美中文字幕第一页| 国产亚洲激情视频在线| 国产亚洲一区精品| 国产第一区电影| 日韩av手机在线看| 国产第一区电影| 国产视频久久久久| 在线电影欧美日韩一区二区私密| 国产精品成人一区二区| 中文字幕欧美日韩va免费视频| 日韩电影免费在线观看中文字幕| 亲子乱一区二区三区电影| 日韩在线免费视频观看| 国产精品视频1区| 亚洲女同精品视频| 97久久伊人激情网| 日韩精品在线视频观看| 国产亚洲精品日韩| 欧美日本在线视频中文字字幕| 国产精品18久久久久久首页狼| 国产香蕉一区二区三区在线视频| 九色精品美女在线| 亚洲欧美国产制服动漫| 91精品在线国产| 久久亚洲欧美日韩精品专区| 韩日精品中文字幕| 91精品视频在线免费观看| 在线视频欧美日韩精品| 欧美电影免费观看大全| 国产精品久久久久久搜索| 国产精品天天狠天天看| 国产精品第一第二| 欧美日韩美女视频| 日韩中文字幕久久| www.欧美视频| 久久久99久久精品女同性| 亚洲天堂网站在线观看视频| 国产91精品最新在线播放| 日韩在线视频网站| 久久精品国产一区| 久久亚洲精品毛片| 日韩av综合网站| 中文字幕视频一区二区在线有码| 精品久久久久久久久久| 日本韩国在线不卡| 亚洲国产精品va在看黑人| 日韩欧美在线观看| 亚洲成人激情小说| 国产香蕉97碰碰久久人人| 国产一区二区三区在线播放免费观看| 38少妇精品导航| 国产成+人+综合+亚洲欧洲| 亚洲人午夜精品| 国自产精品手机在线观看视频| 国产亚洲一区二区精品| 国产丝袜一区二区三区免费视频| 亚洲美女av在线播放| 国产97在线视频| 91最新国产视频| 日韩小视频网址| 国产日韩在线看| 欧美极品xxxx| 美日韩精品免费观看视频| 国产成人综合久久| 国产精品日韩精品| 国产精品午夜国产小视频| 亚洲v日韩v综合v精品v| 欧美视频在线观看 亚洲欧| 国产精品国模在线| 国产91在线视频| 在线激情影院一区| 欧美一级大片视频| 一区二区三区四区在线观看视频| 久久免费精品日本久久中文字幕| 91久久国产精品| 久久久久国产精品免费| 精品久久香蕉国产线看观看亚洲| 国产69精品久久久久9| 亚洲精品久久在线| 欧美一级视频在线观看| 97精品国产97久久久久久免费| 亚洲天堂影视av| 国产精品99久久久久久久久| 成人av资源在线播放| 欧美亚洲另类视频| 国产精品免费一区豆花| 亚洲国产精品成人av| 国产99视频精品免视看7| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲黄色成人网| 日韩欧美成人网| 久久影院中文字幕| 欧美黑人极品猛少妇色xxxxx| 91大神福利视频在线| 538国产精品一区二区在线| 亚洲免费视频在线观看| 91久久久久久久久久| 国产mv免费观看入口亚洲| 狠狠躁夜夜躁人人爽超碰91| www.亚洲免费视频| 欧美在线一区二区视频| 欧美性xxxx极品hd欧美风情| 日韩免费精品视频| 国产精品自产拍在线观| 国产精品夜色7777狼人| 国产精品伦子伦免费视频| 91精品视频在线看| 一本色道久久88综合亚洲精品ⅰ| 欧美视频精品一区| 欧美日韩第一视频| 久久久久久午夜| 欧美日韩免费区域视频在线观看| 精品久久久精品| 97avcom| 一区二区三区视频免费在线观看| 精品一区二区三区电影| 亚洲a∨日韩av高清在线观看| 高清欧美性猛交xxxx黑人猛交| 亚洲欧美另类在线观看| 久久久精品999| 欧美中文在线视频| 午夜精品久久久久久99热软件| 国产福利成人在线| 国产亚洲人成a一在线v站| 久久韩国免费视频| 欧美成人精品在线| 亚洲欧美成人在线| **欧美日韩vr在线| 精品久久久久久久大神国产| 日韩电影在线观看免费| 91国产美女在线观看| 中文字幕亚洲欧美在线| 中文字幕久久久| 亚洲欧美第一页| 中文字幕精品国产| 亚洲精品国产美女| 久久久免费电影| 亚洲精品女av网站| 色综合久久精品亚洲国产| 国产亚洲一区二区在线| 九九精品在线播放| 日韩视频免费大全中文字幕| 亚洲视频在线免费观看| 黑人精品xxx一区一二区| www国产亚洲精品久久网站| 欧美国产日韩一区二区在线观看| 亚洲精品欧美日韩专区| 亚洲美女性视频| 国产999精品久久久影片官网|