首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

PHP 使用 mysqli 擴展連接 MySQL:面向對象與面向過程完整示例

     編輯:MySQL 綜合教學

PHP mysqli 擴展:OO 與 Procedural 兩種風格完整速查

mysqli 是 PHP 連接 MySQL 的推薦擴展(替代已移除的 mysql),支持預處理、多語句、事務、SSL 等特性。

1. 面向對象風格

$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。

2. 面向過程風格

$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)。

3. 關鍵差異對比

操作OO 風格Procedural 風格
連接new mysqli()mysqli_connect()
錯誤號$db->connect_errnomysqli_connect_errno()
錯誤信息$db->connect_errormysqli_connect_error()
查詢$db->query()mysqli_query($db, $sql)
影響行$db->affected_rowsmysqli_affected_rows($db)
關閉$db->close()mysqli_close($db)

4. 中文亂碼解決(三統一)

  1. 數據庫/表/列字符集:utf8mb4。
  2. PHP 文件編碼:保存為 UTF-8 無 BOM。
  3. 連接後執行:$db->set_charset('utf8mb4'); 或 mysqli_set_charset($db, 'utf8mb4');。

5. 常見誤區

  • new mysqli(...) 不是函數,不要寫成 mysqli(...)。
  • 預處理請用 $db->prepare() / mysqli_prepare(),防注入且性能更好。
  • 腳本結束會自動關閉連接,但長運行腳本建議顯式 close() 釋放資源。

總結

新項目統一使用 面向對象風格 + 預處理 + utf8mb4,代碼更現代、安全、可維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved