mysqli 是 PHP 連接 MySQL 的推薦擴展(替代已移除的 mysql),支持預處理、多語句、事務、SSL 等特性。
$db = new mysqli('localhost', 'root', '123456', 'dbname');
if ($db->connect_errno) die('Connect Error: ' . $db->connect_error);
// 切換庫
$db->select_db('dbname');
// 查詢
$query = "SELECT * FROM user WHERE uid = 4";
$result = $db->query($query);
echo "Rows: " . $result->num_rows;
// 獲取行(四種方式)
$row = $result->fetch_assoc(); // 關聯數組 $row['uid']
$row = $result->fetch_row(); // 索引數組 $row[0]
$row = $result->fetch_array(); // 混合數組
$row = $result->fetch_object(); // 對象 $row->uid
// 釋放/關閉
$result->free();
$db->close();
寫操作影響行數:$db->affected_rows。
$db = mysqli_connect('localhost', 'root', '123456', 'dbname');
if (!$db) die('Connect Error: ' . mysqli_connect_error());
mysqli_select_db($db, 'dbname');
$query = "SELECT * FROM user WHERE uid = 4";
$result = mysqli_query($db, $query);
$num = mysqli_num_rows($result);
$row = mysqli_fetch_assoc($result);
$row = mysqli_fetch_row($result);
$row = mysqli_fetch_array($result);
$row = mysqli_fetch_object($result);
mysqli_free_result($result);
mysqli_close($db);
寫操作影響行數:mysqli_affected_rows($db)。
| 操作 | OO 風格 | Procedural 風格 |
|---|---|---|
| 連接 | new mysqli() | mysqli_connect() |
| 錯誤號 | $db->connect_errno | mysqli_connect_errno() |
| 錯誤信息 | $db->connect_error | mysqli_connect_error() |
| 查詢 | $db->query() | mysqli_query($db, $sql) |
| 影響行 | $db->affected_rows | mysqli_affected_rows($db) |
| 關閉 | $db->close() | mysqli_close($db) |
utf8mb4。$db->set_charset('utf8mb4'); 或 mysqli_set_charset($db, 'utf8mb4');。new mysqli(...) 不是函數,不要寫成 mysqli(...)。$db->prepare() / mysqli_prepare(),防注入且性能更好。close() 釋放資源。新項目統一使用 面向對象風格 + 預處理 + utf8mb4,代碼更現代、安全、可維護。