首頁 >資料庫 >mysql教程 >`mysqli` 準備語句:`bind_result()` 還是 `get_result()`?

`mysqli` 準備語句:`bind_result()` 還是 `get_result()`?

Patricia Arquette
Patricia Arquette原創
2024-12-25 09:22:13194瀏覽

`mysqli` Prepared Statements: `bind_result()` or `get_result()`?

Bind_result 與 Get_result:使用哪一個?

簡介

在 mysqli 中使用準備好的語句時,您有兩種取得結果的選項:bind_result() 和 get_result()。了解這些方法之間的差異對於優化資料庫操作至關重要。

Bind_result()

bind_result() 將特定變數綁定到查詢結果中的列,讓您可以將它們直接指派給標量變數。當您需要查詢中的特定列時,通常會使用它。

範例:

$query = 'SELECT id, first_name, last_name FROM table WHERE id = ?';
$id = 5;

$stmt = $mysqli->prepare($query);
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id, $first_name, $last_name);

優點:

  • 適用於過時的 PHP 版本。
  • 單獨傳回每列的變數。

缺點:

  • 需要您手動列出所有要綁定的變數。
  • 需要額外的程式碼以陣列形式傳回行。
  • 表格結構時必須更新

Get_result()

get_result() 以關聯數組或枚舉數組的形式檢索整個結果,並自動填充返回行中的數據。當您需要將整行作為數組處理時,它非常方便。

範例:

$query = 'SELECT * FROM table WHERE id = ?';
$id = 5;

$stmt = $mysqli->prepare($query);
$stmt->bind_param('i', $id);
$stmt->execute();
$result = $stmt->get_result();

優點:

  • 回傳/枚舉數組或關聯物件。
  • 支援 fetch_all() 一次檢索所有傳回的行。

缺點:

  • 需要 MySQL 本機驅動程式 (mysqlnd)。

限制和區別

兩種方法都有限制:

  • bind_result() 需要明確列出列,容易出錯且不靈活。
  • get_result() 不支援過時的 PHP 版本,需要 MySQL 本機驅動程式。

選擇正確的方法

最佳方法取決於您的特定要求:

  • 如果您需要特定列的單獨變數並使用較舊的PHP 版本,請使用bind_result()。
  • 如果您喜歡將行作為數組使用,想要一次檢索所有行,並且有 MySQL 本機驅動程序,請使用get_result().

以上是`mysqli` 準備語句:`bind_result()` 還是 `get_result()`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn