从 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中文网其他相关文章!