MySQLi 和多個 LIKE 查詢結果:綜合指南
使用 MySQLi 的 LIKE
運算子在檢索多個符合行時通常會帶來挑戰。本指南演示了避免此類問題的正確技術。
多行檢索的最佳化程式碼:
以下程式碼片段有效地從 users
表中檢索所有符合的記錄並將它們儲存在 $data
陣列中:
<code class="language-php">$param = "%" . $_POST['user'] . "%"; $stmt = $db->prepare("SELECT id, username FROM users WHERE username LIKE ?"); $stmt->bind_param("s", $param); $stmt->execute(); $result = $stmt->get_result(); $data = $result->fetch_all(MYSQLI_ASSOC);</code>
這裡的關鍵是利用get_result()
。此方法傳回一個 MySQLi 結果對象,從而實現整個結果集的無縫存取和處理。
現代方法(PHP 8.2 及更高版本):
對於 PHP 8.2 及更高版本,有更簡潔的方法:
<code class="language-php">$sql = "SELECT id, username FROM users WHERE username LIKE ?"; $result = $db->execute_query($sql, ["%" . $_POST['user'] . "%"]); $data = $result->fetch_all(MYSQLI_ASSOC);</code>
這利用了 execute_query()
方法,大大簡化了流程。
傳統的Fetch和bind_result方法:
雖然效率較低,但使用 fetch()
和 bind_result()
的傳統方法仍然是一種選擇:
<code class="language-php">$stmt->bind_result($id, $username); while ($stmt->fetch()) { echo "Id: {$id}, Username: {$username}"; }</code>
請注意,這需要一個 while
迴圈來單獨迭代每一行。
基本資源:
有關詳細資訊和進一步探索,請參閱以下資源:
以上是如何使用 MySQLi 檢索多個 LIKE 查詢結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!