在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 版本
>表格結構時必須更新程式碼變更
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為資料檢索提供了更通用的解決方案。它會自動建立一個包含返回行資料的關聯/枚舉數組或物件。在處理動態結果結構或存取資料的靈活性至關重要時,此方法很方便。
允許 fetch_all()方法一次傳回所有傳回的行
需要MySQL 本機驅動程式(mysqlnd)需要MySQL 本機驅動程式(mysqlnd)
結論之間的選擇bind_result 和 get_result 取決於應用程式的特定要求。 bind_result 提供了對結果資料的精確度和控制,但對於動態資料結構來說可能很麻煩。 get_result 提供靈活性和便利性,但較舊的 PHP 版本可能不支援。了解每種方法的優點和限制可以讓開發人員在處理查詢結果時做出明智的決策。
以上是`bind_result` 與 `get_result`:我應該使用哪種 MySQLi 方法來檢索查詢結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!