最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP數(shù)據(jù)對象PDO操作技巧小結(jié)

 更新時間:2016年09月27日 11:28:56   作者:ligbee  
這篇文章主要介紹了PHP數(shù)據(jù)對象PDO操作方法,結(jié)合實例形式總結(jié)分析了php基于pdo的各種常見數(shù)據(jù)庫操作相關技巧與注意事項,需要的朋友可以參考下

本文實例講述了PHP數(shù)據(jù)對象PDO操作技巧。分享給大家供大家參考,具體如下:

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

<?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()執(zhí)行

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

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

PDO實現(xiàn)預編譯

指的是預先編譯sql的結(jié)構(gòu)的一種執(zhí)行sql的語法

如果執(zhí)行多條結(jié)構(gòu)相同的sql,編譯的中間結(jié)果(語法樹)應該也是一致的,因此可以將相同的結(jié)構(gòu),統(tǒng)一編譯,每次使用不同的數(shù)據(jù)執(zhí)行即可。

編譯統(tǒng)一的結(jié)構(gòu)

$pdoStatement = $pdo->prepare(sql結(jié)構(gòu))

綁定數(shù)據(jù)到中間編譯結(jié)果

$pdoStatement ->bindValue()

執(zhí)行

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

預編譯能更好地防止sql注入,是因為預編譯時候不需要用戶的數(shù)據(jù)參與,因此編譯時結(jié)構(gòu)固定,所以數(shù)據(jù)不影響到sql結(jié)構(gòu)。

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

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相關內(nèi)容感興趣的讀者可查看本站專題:《PHP基于pdo操作數(shù)據(jù)庫技巧總結(jié)》、《php+Oracle數(shù)據(jù)庫程序設計技巧總結(jié)》、《PHP+MongoDB數(shù)據(jù)庫操作技巧大全》、《php面向?qū)ο蟪绦蛟O計入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家PHP程序設計有所幫助。

相關文章

  • 在PHP中檢查PHP文件是否有語法錯誤的方法

    在PHP中檢查PHP文件是否有語法錯誤的方法

    在網(wǎng)上找了一下。剛開始以為 token_get_all()函數(shù)能處理語法錯誤的問題,結(jié)果發(fā)現(xiàn),它只是做簡單的詞法分析。沒有辦法。后來到論壇上去問了一下
    2009-12-12
  • php創(chuàng)建多級目錄與級聯(lián)刪除文件的方法示例

    php創(chuàng)建多級目錄與級聯(lián)刪除文件的方法示例

    這篇文章主要介紹了php創(chuàng)建多級目錄與級聯(lián)刪除文件的方法,結(jié)合實例形式分析了php使用mkdir創(chuàng)建多級目錄與unlink結(jié)合rmdir遞歸刪除多級目錄相關操作技巧,需要的朋友可以參考下
    2019-09-09
  • PHP排序算法系列之桶排序詳解

    PHP排序算法系列之桶排序詳解

    這篇文章主要為大家詳細介紹了PHP排序算法系列之桶排序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • PHP mkdir()定義和用法

    PHP mkdir()定義和用法

    mkdir() 函數(shù)創(chuàng)建目錄。若成功,則返回 true,否則返回 false。
    2009-01-01
  • php常用日期時間函數(shù)實例小結(jié)

    php常用日期時間函數(shù)實例小結(jié)

    這篇文章主要介紹了php常用日期時間函數(shù),結(jié)合實例形式總結(jié)分析了php日期時間相關的時間戳、格式化、時區(qū)獲取與設置、時間戳轉(zhuǎn)換與計算等相關操作技巧,需要的朋友可以參考下
    2019-07-07
  • CKEditor4結(jié)合php實現(xiàn)上傳圖片功能

    CKEditor4結(jié)合php實現(xiàn)上傳圖片功能

    ckedit4是沒有圖片上傳功能的,單我們可以通過配置?config.js?文件來設置圖片上傳的接口,然后結(jié)合后端程序?qū)崿F(xiàn)圖片上傳,本文講解CKEditor4結(jié)合php實現(xiàn)上傳圖片功能的方法
    2024-03-03
  • php提交表單發(fā)送郵件的方法

    php提交表單發(fā)送郵件的方法

    這篇文章主要介紹了php提交表單發(fā)送郵件的方法,實例分析了php操作表單發(fā)送郵件的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • php使用gzip壓縮傳輸js和css文件的方法

    php使用gzip壓縮傳輸js和css文件的方法

    這篇文章主要介紹了php使用gzip壓縮傳輸js和css文件的方法,實例分析了使用gzip實現(xiàn)壓縮js和css文件的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 通過PHP current函數(shù)獲取未知字符鍵名數(shù)組第一個元素的值

    通過PHP current函數(shù)獲取未知字符鍵名數(shù)組第一個元素的值

    在開發(fā)中經(jīng)常遇到這樣問題,獲取數(shù)組第一個元素的值,如果是數(shù)字索引那還好,直接$array[0],如果鍵名是字符串,你又未知這個字符串呢?用current()函數(shù)就可以做到
    2013-06-06
  • php 文件狀態(tài)緩存帶來的問題

    php 文件狀態(tài)緩存帶來的問題

    當使用以下函數(shù)時,會因為文件狀態(tài)緩存,導致結(jié)果錯誤
    2008-12-12

最新評論

博野县| 夹江县| 平湖市| 遵化市| 连城县| 邻水| 富顺县| 阿尔山市| 汕尾市| 昌都县| 怀仁县| 共和县| 甘肃省| 康定县| 扬中市| 绿春县| 沈丘县| 泗阳县| 五指山市| 比如县| 利辛县| 临洮县| 汝阳县| 齐齐哈尔市| 汶上县| 关岭| 息烽县| 孙吴县| 建瓯市| 渝中区| 绥阳县| 富宁县| 泾川县| 无为县| 胶州市| 洛浦县| 元氏县| 普格县| 丰都县| 平顶山市| 罗定市|