PHP的mysqli擴展 | PDO | PHP的mysql擴展 | |
引入的PHP版本 | 5.0 | 5.0 | 3.0之前 |
PHP5.x是否包含 | 是 | 是 | 是 |
MySQL開發(fā)狀態(tài) | 活躍 | 在PHP5.3中活躍 | 僅維護 |
在MySQL新項目中的建議使用程度 | 建議 - 首選 | 建議 | 不建議 |
API的字符集支持 | 是 | 是 | 否 |
服務端prepare語句的支持情況 | 是 | 是 | 否 |
客戶端prepare語句的支持情況 | 否 | 是 | 否 |
存儲過程支持情況 | 是 | 是 | 否 |
多語句執(zhí)行支持情況 | 是 | 大多數 | 否 |
是否支持所有MySQL4.1以上功能 | 是 | 大多數 | 否 |
從官方給出的這份結果上來看,優(yōu)先推薦msqli,其次是PDO 。而“民間”給出的結果很多是傾向于使用PDO,因為其不擔有跨庫的優(yōu)點,更有讀寫速度快的特點。
1.PHP與Mysql擴展(本擴展自 PHP 5.5.0 起已廢棄,并在將來會被移除),PHP原生的方式去連接數據庫,是面向過程的
?php $mysql_conf = array( 'host' => '127.0.0.1:3306', 'db' => 'test', 'db_user' => 'root', 'db_pwd' => 'root', ); $mysql_conn = @mysql_connect($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']); if (!$mysql_conn) { die("could not connect to the database:\n" . mysql_error());//診斷連接錯誤 } mysql_query("set names 'utf8'");//編碼轉化 $select_db = mysql_select_db($mysql_conf['db']); if (!$select_db) { die("could not connect to the db:\n" . mysql_error()); } $sql = "select * from user;"; $res = mysql_query($sql); if (!$res) { die("could get the res:\n" . mysql_error()); } while ($row = mysql_fetch_assoc($res)) { print_r($row); } mysql_close($mysql_conn); ?>
2.PHP與Mysqli擴展,面向過程、對象
?php $mysql_conf = array( 'host' => '127.0.0.1:3306', 'db' => 'test', 'db_user' => 'root', 'db_pwd' => 'joshua317', ); $mysqli = @new mysqli($mysql_conf['host'], $mysql_conf['db_user'], $mysql_conf['db_pwd']); if ($mysqli->connect_errno) { die("could not connect to the database:\n" . $mysqli->connect_error);//診斷連接錯誤 } $mysqli->query("set names 'utf8';");//編碼轉化 $select_db = $mysqli->select_db($mysql_conf['db']); if (!$select_db) { die("could not connect to the db:\n" . $mysqli->error); }$sql = "select uid from user where name = 'joshua';"; $res = $mysqli->query($sql); if (!$res) { die("sql error:\n" . $mysqli->error); } while ($row = $res->fetch_assoc()) { var_dump($row); } $res->free(); $mysqli->close(); ?>
3.PHP與PDO擴展,面向過程、對象
?php $mysql_conf = array( 'host' => '127.0.0.1:3306', 'db' => 'test', 'db_user' => 'root', 'db_pwd' => 'joshua317', ); $pdo = new PDO("mysql:host=" . $mysql_conf['host'] . ";dbname=" . $mysql_conf['db'], $mysql_conf['db_user'], $mysql_conf['db_pwd']);//創(chuàng)建一個pdo對象 $pdo->exec("set names 'utf8'"); $sql = "select * from user where name = ?"; $stmt = $pdo->prepare($sql); $stmt->bindValue(1, 'joshua', PDO::PARAM_STR); $rs = $stmt->execute(); if ($rs) { // PDO::FETCH_ASSOC 關聯數組形式 // PDO::FETCH_NUM 數字索引數組形式 while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { var_dump($row); } } $pdo = null;//關閉連接 ?>
更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP基于pdo操作數據庫技巧總結》、《php+mysqli數據庫程序設計技巧總結》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。