MySQL 是 PHP 操做 MySQL 數據庫最原始的 Extension。MySQLi 的 i 表明 Improvement ,提供了相對進階的功能,就 Extension 而言,自己也增長了安全性。而 PDO(PHP Data Object)則是提供了一個 Abstraction Layer 來操做數據庫php
MySQL API 大部分擴展自 PHP 5.5.0 起已廢棄,並在未來會被移除。應使用 MySQLi或 PDO_MySQL 擴展來替換之。原生 MySQL API裏$link
都是能夠省略的,若是沒有填寫,默認使用上一次的鏈接。建議寫上。mysql
一、MySQLi面向過程sql
與原生 MySQL API基本用法是同樣的,只需將mysql替換成mysqli且把$link
放在方法的第一個參數就好了。相比原生 MySQL API,面向過程化的MySQLi裏的$link
是不能夠省略的,若是沒有填寫,會拋出一個警告。由上面代碼也能夠看出,面向過程化的MySQLi與原生 MySQL API基本一致。數據庫
$result = mysqli_query($link, 'select * from user');安全
二、MySQLi面向對象服務器
比較重要的是MySQLi類
和mysqli_result類
,前者用於發送查詢,後者用於從結果集返回數據。oracle
$result = $link->query('select * from user') or die($link->errno . ':' .$link->error);函數
MySQLi 面向過程與面向對象的區別:從上面的兩查詢代碼能夠看出,面向對象是經過鏈接 new 出的 $link對象,訪問其屬性、方法等經過->的形式進行。post
無論是使用原生的MySQL API,仍是MySQLi,都仍是有缺陷的。
一、不支持事務機制;
二、僅支持MySQL,不能使用其它數據庫。
三、不安全,可能有注入風險
四、不支持異常處理spa
PHP的PDO擴展巧妙的解決了這些問題。
PDO使用dsn鏈接,支持衆多類型的數據庫,如mysql,postgresql,oracle,mssql等。
PDO(php data object)擴展類庫爲php訪問數據庫定義了輕量級的、一致性的接口,它提供了一個數據庫訪問抽象層。這樣,不管你使用什麼數據庫,均可以經過一致的函數執行查詢和獲取數據。
PDO大大簡化了數據庫的操做並可以屏蔽不一樣數據庫之間的差別,使用pdo能夠很方便地進行跨數據庫程序的開發,以及不一樣數據庫間的移植,是未來php在數據庫處理方面的主要發展方向。
命令 | 描述 |
---|---|
SELECT VERSION( ) | 服務器版本信息 |
SELECT DATABASE( ) | 當前數據庫名 (或者返回空) |
SELECT USER( ) | 當前用戶名 |
SHOW STATUS | 服務器狀態 |
SHOW VARIABLES | 服務器配置變量 |
參考:
一、PHP: MySQL - Manual
http://php.net/manual/zh/set.mysqlinfo.php
二、原生 MySQL API - Manual
http://php.net/manual/zh/book.mysql.php
三、Mysqli — MySQL加強版擴展 - Manual
http://php.net/manual/zh/book.mysqli.php
四、PHP: PDO - Manual
http://php.net/manual/zh/book.pdo.php