91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP數據對象PDO操作技巧有哪些

發布時間:2021-08-31 14:32:40 來源:億速云 閱讀:114 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關PHP數據對象PDO操作技巧有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

具體如下:

PHP 數據對象 (PDO) 擴展為PHP訪問數據庫定義了一個輕量級的一致接口。

<?php
 try {
  $dsn = "mysql:host=localhost; port=3306; dbname=wsq_hotel; charset=utf-8";
  $user = 'root';
  $psw ='root';
  $pdo = new PDO($dsn,$user,$psw);
  $sql = 'select goods_prices from wsq_goods_info where goods_id=2';
  // $sql = "show database";
  $res = $pdo->query($sql) or var_dump($pdo->errorInfo());
  // var_dump($res);
  $mon = $res->fetch(PDO::FETCH_ASSOC);
  echo $mon['goods_price'];
 } catch (PDOException $e) {
  echo $e->getMessage();
 }
?>

PDO操作事務

//開啟事務
beginTransacition()
//回滾
rollback()
//提交
commit()
//判斷是否處于事務之中
inTransaction()

返回最后插入行的ID

PDO::lastInsertID()

exec()執行

與query()相比,exec()返回的是受影響行數

$sql = "insert into table values('$val')";
if(false===$pdo->exec($sql)){
 echo '執行失敗';
}

PDO實現預編譯

指的是預先編譯sql的結構的一種執行sql的語法

如果執行多條結構相同的sql,編譯的中間結果(語法樹)應該也是一致的,因此可以將相同的結構,統一編譯,每次使用不同的數據執行即可。

編譯統一的結構

$pdoStatement = $pdo->prepare(sql結構)

綁定數據到中間編譯結果

$pdoStatement ->bindValue()

執行

$pdoStatement ->execute()
//$sql = "insert into table values(null,?)";
$sql = "insert into table values(null,:name)";
$stmt = $pdo->prepare($sql);
//多組數據也是一編譯一執行
//$stmt->bindValue(1,'bee');
$stmt->bindValue(':name','bee');
$res = $stmt->execute();
var_dump($res);

預編譯能更好地防止sql注入,是因為預編譯時候不需要用戶的數據參與,因此編譯時結構固定,所以數據不影響到sql結構。

$pdo->query()與$pdo->execute()如果需要防止sql注入,可以使用$pdo->quote()(其作用是先轉義后加引號)

PDOstatement常用方法:

errorInfo()
errorCode()
fetchColumn()
fetch()
fetchAll()
rowCount()
closeCursor()

pdo應用

<?php
header('content-type:text/html;charset=utf-8');
 class PDODB{
  static private $_init;
  private $_host;
  private $_port;
  private $_dbname;
  private $_username;
  private $_password;
  private $_charset;
  private $_dns;
  private $_pdo;
  private function __construct($config){
   $this->_initParamas($config);
   $this->_initDNS();
   $this->_initDriverOptions();
   $this->_initPDO();
  }
  private function __clone(){}
  static public function getInstance($config){
   if(!static::$_init instanceof static){
    static::$_init = new static($config);
   }
   return static::$_init;
  }
  private function _initParamas($config){
   $this->_host = isset($config['host'])?$config['host']:'localhost';
   $this->_port = isset($config['port'])?$config['port']:'3306';
   $this->_dbname = isset($config['dbname'])?$config['dbname']:'';
   $this->_username = isset($config['username'])?$config['username']:'root';
   $this->_passward = isset($config['passward'])?$config['passward']:'';
   $this->_charset = isset($config['charset'])?$config['charset']:'utf8';
  }
  private function _initDNS(){
   $this->_dns = "mysql:host=$this->_host;port=$this->_port;dbname=$this->_dbname";
  }
  private function _initDriverOptions(){
   $this->_driverOptions = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => "set names $this->_charset"
   );
  }
  private function _initPDO(){
   $this->_pdo = new PDO($this->_dns,$this->_username,$this->_passward,$this->_driverOptions) or die("fail");
  }
  public function query($sql){
   if(!$result = $this->_pdo->query($sql)){
    $erro = $this->_pdo->errorInfo();
    echo '失敗的語句'.$sql.'<br>';
    echo '錯誤代碼'.$erro[1].'<br>';
    echo '錯誤信息'.$erro[2].'<br>';
    die;
   }
   return $result;
  }
  public function fetchAll($sql){
   $res = $this->query($sql);
   $list = $res->fetchAll(PDO::FETCH_ASSOC);
   $res->closeCursor();
   return $list;
  }
  public function fetchRow($sql){
   $res = $this->query($sql);
   $row = $res->fetch(PDO::FETCH_ASSOC);
   $res->closeCursor();
   return $row;
  }
  public function fetchOne($sql){
   $res = $this->query($sql);
   $one = $res->fetchColumn();
   $res->closeCursor();
   return $one;
  }
  public function escape_string($data){
   return $this->_pdo->quote($data);
  }
 }
 $config = array(
  "host"=>"localhost",
  "username"=>"root",
  "passward"=>"root",
  "dbname"=>"students"
 );
 $pdo = PDODB::getInstance($config);
 $sql = "select sdept from student where sage=21";
 var_dump($pdo->fetchRow($sql));
?>

運行效果圖如下:

PHP數據對象PDO操作技巧有哪些

關于“PHP數據對象PDO操作技巧有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德化县| 靖远县| 交城县| 定兴县| 清镇市| 云和县| 嫩江县| 苏尼特左旗| 于田县| 洪江市| 桐城市| 海门市| 南京市| 宁强县| 永城市| 灵台县| 玉田县| 玉溪市| 澎湖县| 湄潭县| 万源市| 龙胜| 扎鲁特旗| 永安市| 莱芜市| 高淳县| 图们市| 二连浩特市| 涟水县| 甘德县| 六盘水市| 石棉县| 永泰县| 东辽县| 正定县| 于田县| 黎川县| 肃北| 荔浦县| 拜泉县| 安丘市|