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

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

Dec 13, 2024 am 03:28 AM

`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中文網其他相關文章!

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

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

減少在Docker中使用MySQL內存的使用 減少在Docker中使用MySQL內存的使用 Mar 04, 2025 pm 03:52 PM

減少在Docker中使用MySQL內存的使用

如何使用Alter Table語句在MySQL中更改表? 如何使用Alter Table語句在MySQL中更改表? Mar 19, 2025 pm 03:51 PM

如何使用Alter Table語句在MySQL中更改表?

mysql無法打開共享庫怎麼解決 mysql無法打開共享庫怎麼解決 Mar 04, 2025 pm 04:01 PM

mysql無法打開共享庫怎麼解決

什麼是 SQLite?全面概述 什麼是 SQLite?全面概述 Mar 04, 2025 pm 03:55 PM

什麼是 SQLite?全面概述

在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器) 在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器) Mar 04, 2025 pm 03:54 PM

在 Linux 中運行 MySQl(有/沒有帶有 phpmyadmin 的 podman 容器)

在MacOS上運行多個MySQL版本:逐步指南 在MacOS上運行多個MySQL版本:逐步指南 Mar 04, 2025 pm 03:49 PM

在MacOS上運行多個MySQL版本:逐步指南

如何保護MySQL免受常見漏洞(SQL注入,蠻力攻擊)? 如何保護MySQL免受常見漏洞(SQL注入,蠻力攻擊)? Mar 18, 2025 pm 12:00 PM

如何保護MySQL免受常見漏洞(SQL注入,蠻力攻擊)?

如何為MySQL連接配置SSL/TLS加密? 如何為MySQL連接配置SSL/TLS加密? Mar 18, 2025 pm 12:01 PM

如何為MySQL連接配置SSL/TLS加密?

See all articles