pdo和mysqli的區別

2021-08-20 05:49:34 字數 2069 閱讀 8916

1、pdo能夠支援其它非mysql的資料庫,而mysqli專門針對mysql設計的

2、連線

// 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');

3、api支援

pdo和mysqli都是通過物件導向的形式提供api,但是同時mysqli也提供了面向過程的api,這種形式對於新手來說更容易理解。如果你對原生的php mysql 驅動熟悉,你會發現很輕鬆得就能使用mysqli的介面來替換原來的資料訪問。用pdo的好處是,pdo支援多種資料庫,而mysqli只支援mysql,一但你掌握了就你可以隨心所欲的使用連線多種資料庫。
4、資料庫支援

pdo支援多種資料庫, mysqli只支援mysql資料庫
5、命名引數支援

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();

6、物件對映

基於資料庫的開發一般都是從資料庫中讀取資料然後把這些資料用乙個物件來承載。pdo和mysqli都支援物件對映

7、安全性

二者都可以防止sql注入。我們先看乙個例子。

$_get['username'] = "'; delete from users; /*"
當使用者輸入的username引數的值為上面的值("'; delete from users; /*"),如果你沒有對這個值做任何處理,使用者就成功將delete語句注入,那麼user表的記錄就會被全部刪除。

8、手動轉義(採用了pdo和mysqli的api自帶的函式對獲取到的引數的值進行了轉義)

$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'");

我是該用 MySQLi ,還是 PDO

php 5 及以上版本建議使用以下方式連線 mysql 在 php 早起版本中我們使用 mysql 擴充套件。但該擴充套件在 2012 年開始不建議使用。如果你需要乙個簡短的回答,即 你習慣哪個就用哪個 mysqli 和 pdo 有它們自己的優勢 pdo 應用在 12 種不同資料庫中,mysqli ...

mysql與mysqli的區別

在php5版本以後,增加了mysqli的函式功能,某種意義上講,它是mysql系統函式的增強版,更穩定更高效更安全。mysql與mysqli的區別 1 mysql是非持繼連線函式,mysql每次鏈結都會開啟乙個連線的程序。2 mysqli是永遠連線函式,mysqli多次執行mysqli將使用同一連線...

pdo中幾種查詢方式的區別

1 exec php手冊中對其的描述是 執行一條 sql 語句,並返回受影響的行數。從中可以看出,execute可應用於 增刪改查 中的增刪改。因為查詢操作會返回乙個結果集,而exec函式只能返回受影響的函式。2 query 對應於 增刪改查 中的 查 用於執行一次的sql語句,返回乙個pdosta...