| 特性 | mysql (舊擴充) | mysqli (改良版) |
|---|---|---|
| 連線模式 | 非持久,每次新建進程 | 支援持久連線,重用進程,減輕伺服器負擔 |
| 物件導向 | 不支援 | 支援 OO 與程序式雙介面 |
| 預處理語句 | 不支援 | 支援 Prepared Statements (防注入、效能佳) |
| 交易控制 | 不支援 | 支援 commit/rollback |
| 預設啟用 | PHP 早期預設開啟 | 需在 php.ini 啟用 extension=php_mysqli.dll (Win) 或編譯參數 (Linux) |
$conn = mysqli_connect('localhost', 'root', '123', 'db_test') or die('error');
$sql = \"SELECT * FROM db_table\";
$query = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_array($query)) {
echo $row['title'];
}
$conn = new mysqli('localhost', 'root', '123', 'db_test');
$sql = \"SELECT * FROM db_table\";
$query = $conn->query($sql);
while ($row = $query->fetch_array()) {
echo $row['title'];
}
$mysqli = new mysqli('localhost', 'root', '', 'DB_Lib2Test');
$mysqli->autocommit(false); // 開始交易
$mysqli->query($sql1);
$mysqli->query($sql2);
if (!$mysqli->errno) {
$mysqli->commit();
echo 'ok';
} else {
echo 'err';
$mysqli->rollback();
}
mysql_pconnect 建立持久連線,進程結束不釋放,類似連線池。優點:省去重複連線開銷;缺點:佔用記憶體與連線數,高併發易觸發 max_connections 限制。建議視流量決定是否使用。