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

首頁 > 數據庫 > MySQL > 正文

PDO和MySQLi連接區別

2020-03-22 18:36:04
字體:
來源:轉載
供稿:網友
  • 自PHP5.5開始,傳統的mysql擴展已經廢棄,只能使用PHP提供的html' target='_blank'>MySQLi擴展或PDO擴展,那么它們之間的區別有哪些呢?本文匯總此兩種連接的各自特點,主要從數據庫支持、穩定性及性能等方面做個簡單比較,僅供設計參考。

    申明:本文翻譯來源于文本鏈接地址,天緣在該文基礎上稍作補充修整,如有不明之處,請直接訪問文末原文鏈接。

    一、PDO和MySQLi區別

    下表列出PDO和MySQLi的幾個典型方面區別:

    更多方面比較也可參考另一篇文章:

    http://www.php.net/manual/zh/mysqlinfo.api.choosing.php

    二、連接方式

    PDO和mysqli創建連接方式如下:

    // PDO$pdo = new PDO("mysql:host=localhost;dbname=database", 'username', 'password'); // mysqli, procedural way$mysqli = mysqli_connect('localhost','username','password','database'); // mysqli, object oriented way$mysqli = new mysqli('localhost','username','password','database');
    三、API和數據庫

    PDO和MySQLi都提供面向對象API,MySQLi同時還提供面向過程API,從傳統的MySQL擴展接口移植到MySQLi接口非常簡單,但PDO則可提供對多種數據庫訪問支持,所以,從業務種類角度來講,PDO似乎應用更“廣泛”一些,但MySQLi則更“專用”。

    PDO支持十幾種常見數據庫,常見的MySQL、PostgreSQL、MS SQL Server、SQLite等等全部可使用PDO對應擴展支持,而接口部分及查詢語句僅需要很少的改動,而PHP MySQLi擴展則只支持MySQL,要想支持別的數據改動會非常大。

    當然,關于多數據庫支持問題,其實似乎用處不大,“多數據庫支持”就跟我們常說的“跨平臺”一樣,很多時候只是個概念炒作,僅僅為了少部分用戶群體的需求就把架構做的冗大實質不值,任何程序皆為人設計,為人所用,最終目標都應該以易用、速度、效率和功耗作為追求目標。

    四、命名參數

    PDO綁定命名參數示例如下:

    $params = array(':username' => 'test', ':email' => $mail, ':last_login' => time() - 3600);    $pdo->prepare('   SELECT * FROM users   WHERE username = :username   AND email = :email   AND last_login > :last_login');    $pdo->execute($params);

    MySQLi不支持命名參數,綁定變量方法如下:

    $query = $mysqli->prepare('   SELECT * FROM users   WHERE username = ?   AND email = ?   AND last_login > ?');    $query->bind_param('sss', 'test', $mail, time() - 3600);$query->execute();
    六、對象映射(Object mapping)

    PDO和MySQLi均支持對象映射,對象映射提供對數據庫記錄集的方法封裝(天緣自己賦的名稱,對象映射的執行效果看起來有點類似eval的感覺),參考示例如下:

    對象類定義:

    class User {   public $id;   public $first_name;   public $last_name;       public function info()   {      return '#'.$this->id.': '.$this->first_name.' '.$this->last_name;   }}

    調用類方法:

    $query = "SELECT id, first_name, last_name FROM users";    // PDO$result = $pdo->query($query);$result->setFetchMode(PDO::FETCH_CLASS, 'User'); while ($user = $result->fetch()) {   echo $user->info()."/n";}// MySQLI, procedural wayif ($result = mysqli_query($mysqli, $query)) {   while ($user = mysqli_fetch_object($result, 'User')) {      echo $user->info()."/n";   }}// MySQLi, object oriented wayif ($result = $mysqli->query($query)) {   while ($user = $result->fetch_object('User')) {      echo $user->info()."/n";   }}
    七、安全性

    PDO和MySQLi均提供SQL防注入安全(jnjection security)方法,比如quote、escape等等,

    // PDO, "manual" escaping$username = PDO::quote($_GET['username']);$pdo->query("SELECT * FROM users WHERE username = $username");// mysqli, "manual" escaping$username = mysqli_real_escape_string($_GET['username']);$mysqli->query("SELECT * FROM users WHERE username = '$username'");

    PDO::quote()不但轉義字符串,還會引用它,而mysqli_real_escape_string()則只會轉義字符串,所以,原作者推薦大家使用下面方法,而盡量減少使用而盡量不要使用PDO::quote()和mysqli_real_escape_string()。

    // PDO, prepared statement$pdo->prepare('SELECT * FROM users WHERE username = :username');$pdo->execute(array(':username' => $_GET['username']));// mysqli, prepared statements$query = $mysqli->prepare('SELECT * FROM users WHERE username = ?');$query->bind_param('s', $_GET['username']);$query->execute();

    關于PDO::quote()可參考:http://php.net/manual/zh/pdo.quote.php

    八、總結

    另外,作者還從性能等方面做了描述,不過天緣認為性能指標只是相對的,任何的數據庫系統都應該從系統角度去衡量,都是整體權衡可用、效率、速度、擴展等方面需求下的結果。單從數據庫引擎角度,PDO似乎略有小勝,支持多種類型數據庫、名空間,PDO的運行效能則略低于MySQLi,這也很正常,MySQLi是定制的當然效率更高一些。


    PHP編程

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

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    91性高湖久久久久久久久_久久99| 亚洲资源在线看| 欧美性高跟鞋xxxxhd| 国产日韩欧美黄色| 久久精品视频在线观看| 久久久亚洲网站| 日韩毛片中文字幕| 国产在线不卡精品| 91爱爱小视频k| www.xxxx精品| 欧美国产在线视频| 日韩精品在线免费观看视频| 国产91精品久久久| 黄色成人av在线| 国产精品va在线播放| 91免费国产视频| 亚洲性视频网站| 亚洲性线免费观看视频成熟| 久久亚洲国产精品| 精品国产精品自拍| 91免费的视频在线播放| 欧美wwwxxxx| 亚洲欧洲日产国码av系列天堂| 欧美激情精品久久久久久黑人| 久久久免费观看视频| 91夜夜未满十八勿入爽爽影院| 欧美极品少妇xxxxⅹ免费视频| 欧美天堂在线观看| 欧美日韩国产一区二区| 欧美激情精品久久久久久久变态| 亚洲夜晚福利在线观看| 91免费电影网站| 国产97在线视频| 精品激情国产视频| 亚洲成人动漫在线播放| 91理论片午午论夜理片久久| 欧美日韩在线观看视频| 亚洲人线精品午夜| 精品性高朝久久久久久久| 91色精品视频在线| 久久影视三级福利片| 亚洲另类欧美自拍| 亚洲天堂视频在线观看| 亚洲韩国欧洲国产日产av| 91久久精品国产91久久| 国产精品成人观看视频国产奇米| 国产欧美韩国高清| 91av网站在线播放| 亚洲在线观看视频| 亚洲qvod图片区电影| 久久精品视频va| 亚洲精品乱码久久久久久按摩观| 欧美精品成人91久久久久久久| 国产精品久久二区| 国产精品91在线| 久久久亚洲网站| 国产一区视频在线| 欧美精品手机在线| 在线观看成人黄色| 亚洲精品短视频| 亚洲精品国产综合久久| 黄色成人在线免费| 色多多国产成人永久免费网站| 亚洲美女性生活视频| 精品动漫一区二区| 欧美国产激情18| 在线成人免费网站| 欧美性xxxx在线播放| 另类少妇人与禽zozz0性伦| 中文字幕欧美日韩精品| 国产精品久久久91| 亚洲精品女av网站| 777777777亚洲妇女| 国产一区二区三区在线免费观看| 91精品国产综合久久久久久久久| 欧美色xxxx| 亚洲国产黄色片| 国产精品一区久久久| 国产精品电影久久久久电影网| 国产成人精品视| 亚洲欧美国产精品久久久久久久| 亚洲精品www久久久久久广东| 91在线直播亚洲| 欧美日本啪啪无遮挡网站| 亚洲国产高清福利视频| 免费91麻豆精品国产自产在线观看| 欧美视频在线免费看| 欧美壮男野外gaytube| 97高清免费视频| 欧美激情一二三| 国产精品1区2区在线观看| 亚洲丝袜在线视频| 九九久久久久久久久激情| 91老司机精品视频| 视频在线观看一区二区| 日韩精品久久久久久久玫瑰园| 日本道色综合久久影院| 国产精品一区二区3区| 亚洲第一网中文字幕| 日韩经典中文字幕| 国产精品av在线| 按摩亚洲人久久| 亚洲色图狂野欧美| 精品国内亚洲在观看18黄| 国外成人在线直播| 国产精品久久久久久久久久99| 亚洲无限乱码一二三四麻| 国产精品极品美女在线观看免费| 日韩精品中文字幕在线播放| 一区二区成人av| 日韩国产精品亚洲а∨天堂免| 久久久久久久久网站| 国产精品久久久久久久久粉嫩av| 亚洲成人av资源网| 日韩在线视频免费观看高清中文| 国产精品日韩欧美大师| 亚洲成av人影院在线观看| 性色av一区二区咪爱| 中文字幕日韩欧美精品在线观看| 亚洲人成电影在线播放| 日韩欧美成人区| 精品视频www| 久久亚洲精品中文字幕冲田杏梨| 国产aⅴ夜夜欢一区二区三区| 一区二区日韩精品| 国产一区视频在线播放| 欧美日韩国产第一页| 国产成人av在线播放| 97在线看免费观看视频在线观看| 久久成人这里只有精品| 欧美成人精品激情在线观看| 日韩欧美中文字幕在线观看| 国产一区二区三区久久精品| 欧美性猛交xxxx| 国产成人在线播放| 久久久久久久久久久成人| 456国产精品| 成人免费淫片视频软件| 欧美成人精品xxx| 国产一区二区三区高清在线观看| 欧美成年人视频网站欧美| 尤物九九久久国产精品的特点| 午夜免费日韩视频| 亚洲黄色www| 中文字幕亚洲一区二区三区五十路| 国产精品成人aaaaa网站| 久久亚洲精品中文字幕冲田杏梨| 欧美另类在线播放| 91av国产在线| 尤物精品国产第一福利三区| 亚洲xxxxx电影| 国产一区二区在线免费视频| 久久综合久久88| 777精品视频| 亚洲视屏在线播放| 欧美中文字幕在线| 国产精品日本精品| 久久伊人精品天天| 日韩精品在线视频美女| 国产乱人伦真实精品视频| 性欧美视频videos6一9| 欧美另类交人妖| 一个人www欧美| 亚洲午夜未满十八勿入免费观看全集|