首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP MySQLi 擴充函式庫完整速查:物件導向與程序風格對照表

     編輯:MySQL 資料庫相關知識

MySQLi(MySQL Improved)為 PHP 5.0+ 內建擴充,支援預處理語句、事務、多重查詢。本文整理物件導向(OO)與程序風格雙模式完整對照,適用 PHP > 5.0、MySQL > 4.1 環境。

1. 連線資料庫

模式語法回傳
OO$db = new mysqli($host, $user, $pass, $dbname);mysqli 物件
程序$db = mysqli_connect($host, $user, $pass, $dbname);資源 handle

2. 連線錯誤處理

// OO
if ($db->connect_errno) die($db->connect_error);

// 程序
if (mysqli_connect_errno()) die(mysqli_connect_error());

3. 選擇資料庫

$db->select_db($dbname);           // OO
mysqli_select_db($db, $dbname);    // 程序

4. 執行查詢

$result = $db->query($sql);        // OO
$result = mysqli_query($db, $sql); // 程序

5. 結果集操作

操作OO程序
取得行數$result->num_rowsmysqli_num_rows($result)
關聯陣列$result->fetch_assoc()mysqli_fetch_assoc($result)
索引陣列$result->fetch_row()mysqli_fetch_row($result)
物件$result->fetch_object()mysqli_fetch_object($result)
釋放結果$result->free()mysqli_free_result($result)

6. 關閉連線

$db->close();           // OO
mysqli_close($db);      // 程序

7. 影響行數

$db->affected_rows;           // OO
mysqli_affected_rows($db);    // 程序

8. 預處理語句(防 SQL 注入核心)

// OO 完整流程
$stmt = $db->prepare("INSERT INTO books (isbn, author, title, price) VALUES (?, ?, ?, ?)");
$stmt->bind_param("sssd", $isbn, $author, $title, $price);  // s=string, d=double, i=int, b=blob
$stmt->execute();
echo $stmt->affected_rows . " row inserted";
$stmt->close();

程序風格對應

OO 方法程序函式
$db->prepare()mysqli_stmt_prepare()
$stmt->bind_param()mysqli_stmt_bind_param()
$stmt->execute()mysqli_stmt_execute()
$stmt->affected_rowsmysqli_stmt_affected_rows()
$stmt->close()mysqli_stmt_close()

9. 事務控制

$db->autocommit(FALSE);
$db->begin_transaction();  // PHP 5.5+
// 或 $db->query('START TRANSACTION');
$db->commit();  // 或 rollback()

10. 多重查詢

$db->multi_query("SELECT * FROM t1; SELECT * FROM t2;");
do {
  if ($result = $db->store_result()) {
    // 處理結果集
    $result->free();
  }
} while ($db->more_results() && $db->next_result());

關鍵優勢總結

  • 預處理語句:效能(解析一次多次執行)+ 安全(參數綁定防注入)
  • 物件導向 API:程式碼可讀性高、易維護
  • 支援 MySQL 5.1+ 新特性:事務、視圖、觸發器、儲存過程

新專案強烈建議直接使用 MySQLi(或 PDO),棄用已移除的 mysql_* 系列函式。

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