PHP擴展數據庫連接參數說明詳解
名詞解釋:
mysqli,mysqlnd,pdo到底是什麽?,有什麽用途?
MySQL: This extension is deprecated as of PHP 5.5.0, and has been removed as of php 7.0.0.
MYSQLI: mysql Improved Extension
MySQLND: MySQL Native Drive
PDO:The PHP Data Objects。extension defines a lightweight, consistent interface for accessing databases in PHP。
以上,摘自 PHP官方手冊: http://php.net/manual/en/book.mysqli.php
以下為中文翻譯:
MYSQL 也叫 Original MySQL,PHP4版本的MYSQL擴展,從PHP5起已經被廢棄,並從PHP7中移除。
MYSQLI 叫做 “MySQL增強擴展”。
MYSQLND MYSQL NATIVE DIRVER 叫做MYSQL “官方驅動”或者更加直接點的叫做“原生驅動”
PDO PHP Data Objects PHP數據對象,是PHP應用中的一個數據庫抽象層規範。
再補充幾個名詞解釋:
1 、什麽是API?
一個應用程序接口(Application Programming Interface的縮寫),定義了類,方法,函數,變量等等一切 你的應用程序中為了完成特定任務而需要調用的內容。在PHP應用程序需要和數據庫進行交互的時候所需要的API 通常是通過PHP擴展暴露出來(給終端PHP程序員調用)。
上文所說的MYSQL 和MYSQLI擴展就提供了這樣的API。
2、什麽是驅動?
驅動是一段設計用來於一種特定類型的數據庫服務器進行交互的軟件代碼。驅動可能會調用一些庫,
比如MySQL客戶端庫或者MySQL Native驅動庫。 這些庫實現了用於和MySQL數據庫服務器進行交互的底層協議。
從PHP拓展的角度上看,MYSQL和MYSQLi還是比較上層的拓展,依賴更底層的庫去連接和訪問數據庫。
上文所說的MYSQLND 就是所說的底層的數據庫驅動。當然,還有一個驅動叫做libmysqlclient。
小結:
從應用的層面上看,我們通過PHP 的MYSQL或者MYSQLi擴展提供的API去操作數據庫。
從底層來看,MYSQLND提供了底層和數據庫交互的支持(可以簡單理解為和MySQL server進行網絡協議交互)。
而PDO,則提供了一個統一的API接口,使得你的PHP應用不去關心具體要連接的數據庫服務器系統類型。也就是說,如果你使用PDO的API,可以在任何需要的時候無縫切換數據庫服務器。比如MYSQL,SQLITE任何數據庫都行。
即從大部分功能上看,PDO提供的API接口和MYSQLI提供的接口對於普通的增刪改查效果是一致的。
通過PHP代碼理解:
MYSQL連接:
<?php $conn = @ mysql_connect("localhost", "root", "") or die("數據庫連接錯誤"); mysql_select_db("bbs", $conn); mysql_query("set names ‘utf8‘"); echo "數據庫連接成功"; ?>
MYSQLI連接:
<?php $conn = mysqli_connect(‘localhost‘, ‘root‘, ‘‘, ‘bbs‘); if(!$conn){ die("數據庫連接錯誤" . mysqli_connect_error()); }else{ echo"數據庫連接成功"; } ?>
PDO連接:
<?php try{ $pdo=new pdo("mysql:host=localhost;dbname=bbs","root",""); }catch(PDDException $e){ echo"數據庫連接錯誤"; } echo"數據庫連接成功"; ?>
註意常用參數
--enable-pdo
--with-pdo-mysql
--enable-mysqlnd
--with-mysqli
--with-mysql //php7的已經不再支持,無論是編譯還是yum安裝都會報ERROR
本文出自 “boyhack” 博客,請務必保留此出處http://461205160.blog.51cto.com/274918/1943416
PHP擴展數據庫連接參數說明詳解