從 MySQLi LIKE 查詢中擷取多筆記錄
MySQLi 的 LIKE
查詢可以產生多個結果。 但是,標準 fetch()
方法僅檢索第一行。 本指南概述了獲取所有匹配記錄的幾種方法。
方法一:get_result()
和fetch_all()
這是首選方法。 get_result()
取得整個結果集,fetch_all()
有效地將其轉換為關聯數組:
<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>
方法 2:使用 fetch()
和循環的準備語句
此方法使用帶有 bind_result()
的準備好的語句,並使用 fetch()
進行迭代,直到沒有更多行可用:
<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(); $stmt->bind_result($id, $username); while ($stmt->fetch()) { // Process each row ($id, $username) }</code>
方法 3:execute_query()
(PHP 8.2 及更高版本)
對於 PHP 8.2 及更高版本,execute_query()
提供了一個簡潔的替代方案:
<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>
有用的資源:
以上是如何從 MySQLi LIKE 查詢中取得所有結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!