巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
建站专提News

php中PDO体例实现数据库的增编削查

一佰互联网站开辟设想(www.taishanly.com) 宣布日期 2020-04-28 13:45:24 阅读数: 185

须要开启php的pdo撑持,php5.1以上版本撑持

实现数据库毗连单例化,有三因素 静态变量、静态实例化体例、公有机关函数 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]->pdo;  }     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;    }  }

测试文件test.php

header("Content-type: text/html; charset=utf-8");define("APP_DIR", dirname(__FILE__)); if (function_exists("spl_autoload_register")) {  spl_autoload_register("autoClass");} else {  function __auto_load($className){    autoClass($className);  }} function autoClass($className){  try{    require_once APP_DIR."/class/".$className.".php";  } catch (Exception $e) {    die("Error:" . $e->getMessage() . "<br />");  }}$DB = new DB();//拔出$inData["a"] = rand(1, 100);$inData["b"] = rand(1, 1000);$inData["c"] = rand(1,200) . "." . rand(1,100);$ret = $DB->insert("a", $inData);echo "拔出" . ($ret ? "胜利" : "失利") . "<br/>";//更新$upConData["a"] = 100;$upConJudge["a"] = "<";$upConData["b"] = 30;$upConJudge["b"] = ">";list($upConStr, $mapUpConData) = $DB->FDField("b", 200, "<", "gt");$condition = array(  "str" => $upConStr,  "data" => $upConData,  "judge" => $upConJudge,  "link" => "and");$upData["a"] = rand(1, 10);$upData["b"] = 1;$upData["c"] = 1.00;$changeRows = $DB->update("a", $upData, $condition, $mapUpConData);echo "更新行数:" . (int) $changeRows . "<br/>";//删除$delVal = rand(1, 10);list($delCon, $mapDelCon) = $DB->FDField("a", $delVal);$delRet = $DB->delete("a", $delCon, $mapDelCon);echo "删除a=" . $delVal . ($delRet ? "胜利" : "失利") . "<br/>"; //查问$data["a"] = "10";$judge["a"] = ">";$data["b"] = "400";$judge["b"] = "<";list($conSql, $mapConData) = $DB->FDFields($data, "and", $judge);$mData = $DB->fetch("select * from a where " . $conSql . " order by `a` desc", $mapConData); var_dump($mData);

以上所述便是本文的全数内容了,但愿大师能够或许喜好。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事履历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松实现pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。更多资讯:tags标签

相干消息more

31
03月
【鞍山搜索引擎优化】优化挪动端网站,SEOre须要

跟着挪动互联网的敏捷成长,挪动电子装备的进步,手机、平板上彀几近已成为人们的糊口习气。基于用户对挪动装备的依靠,搜索引擎优化行业及用户的须要,逐... >>概况

20
03月
着名网站扶植公司有哪些

分享 近几年中国的互联网用户剧增,国际互联网用户人数已达六... >>概况

20
04月
HTML5 video视频字幕的利用和建造方

HTML5许可咱们利用 元素为视频指定字幕。这个元素的各类属性许可咱们指定如许的工具,比方咱们增加的内容的范例,它地点的说话,固然另有对包罗... >>概况

26
04月
假造主机若何从电信机房转移到网通机房?

若您须要改换假造主机线路、同线路机房或型号,都能够或许挑选进级停止改换,主动实现操纵。体例:登录办理中间,在营业办理——假造主机办理,找到须要... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站