首頁 > 資料庫 > mysql教程 > `bind_result` 與 `get_result`:我應該使用哪種 MySQLi 方法來檢索查詢結果?

`bind_result` 與 `get_result`:我應該使用哪種 MySQLi 方法來檢索查詢結果?

Susan Sarandon
發布: 2024-12-13 03:28:10
原創
613 人瀏覽過

`bind_result` vs. `get_result`: Which MySQLi Method Should I Use for Retrieving Query Results?

在bind_result和get_result之間進行選擇

使用準備好的語句進行資料庫查詢時,選擇適當的方法來處理結果可能會顯著影響程式碼的效率和靈活性。本文探討了 bind_result 和 get_result 這兩種常用的檢索結果資料的方法之間的差異。

bind_result

當需要精確控制變數賦值時,bind_result 是理想的選擇。透過明確指定要綁定到每一列的變量,可以確保變數的順序與返回行的結構嚴格匹配。當提前知道返回行的結構並且可以相應地自訂程式碼時,這種方法是有利的。

$query1 = 'SELECT id, first_name, last_name, username FROM `table` WHERE id = ?';
$id = 5;

$stmt = $mysqli->prepare($query1);
/*
    Binds variables to prepared statement

    i    corresponding variable has type integer
    d    corresponding variable has type double
    s    corresponding variable has type string
    b    corresponding variable is a blob and will be sent in packets
*/
$stmt->bind_param('i',$id);

/* execute query */
$stmt->execute();

/* Store the result (to get properties) */
$stmt->store_result();

/* Get the number of rows */
$num_of_rows = $stmt->num_rows;

/* Bind the result to variables */
$stmt->bind_result($id, $first_name, $last_name, $username);

while ($stmt->fetch()) {
    echo 'ID: '.$id.'<br>';
    echo 'First Name: '.$first_name.'<br>';
    echo 'Last Name: '.$last_name.'<br>';
    echo 'Username: '.$username.'<br><br>';
}
登入後複製

bind_result 的優點:

  • 相容過時的PHP 版本
  • 單獨回傳變數
  • 相容過時的PHP 版本

單獨回傳變數與過時的PHP 版本

>
    bind_result的缺點:
  • 手動列出所需的所有變數
  • 需要更多程式碼才能將行傳回為array

表格結構時必須更新程式碼變更

get_result

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

$stmt = $mysqli->prepare($query2);
/*
    Binds variables to prepared statement

    i    corresponding variable has type integer
    d    corresponding variable has type double
    s    corresponding variable has type string
    b    corresponding variable is a blob and will be sent in packets
*/
$stmt->bind_param('i',$id);

/* execute query */
$stmt->execute();

/* Get the result */
$result = $stmt->get_result();

/* Get the number of rows */
$num_of_rows = $result->num_rows;

while ($row = $result->fetch_assoc()) {
    echo 'ID: '.$row['id'].'<br>';
    echo 'First Name: '.$row['first_name'].'<br>';
    echo 'Last Name: '.$row['last_name'].'<br>';
    echo 'Username: '.$row['username'].'<br><br>';
}
登入後複製

get_result為資料檢索提供了更通用的解決方案。它會自動建立一個包含返回行資料的關聯/枚舉數組或物件。在處理動態結果結構或存取資料的靈活性至關重要時,此方法很方便。

    get_result 的優點:
  • 傳回關聯/自動填入資料的枚舉數組或物件

允許 fetch_all()方法一次傳回所有傳回的行

    get_result 的缺點:

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

結論之間的選擇bind_result 和 get_result 取決於應用程式的特定要求。 bind_result 提供了對結果資料的精確度和控制,但對於動態資料結構來說可能很麻煩。 get_result 提供靈活性和便利性,但較舊的 PHP 版本可能不支援。了解每種方法的優點和限制可以讓開發人員在處理查詢結果時做出明智的決策。

以上是`bind_result` 與 `get_result`:我應該使用哪種 MySQLi 方法來檢索查詢結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板