如何在使用 foreach 和 while 循环时限制搜索结果

How to limit search results while using foreach and while loops

以下代码运行良好,但我找不到限制结果数量的方法。有什么想法吗?

    $q = "some keywords for search"; // always escape
    $keys = explode( " ",$q );
    $query = "SELECT * FROM table WHERE para LIKE '%$q%' ";

    foreach($keys as $k)
    {
        $query .= " OR para LIKE '%$k%'";
    }

    $result = $mysqli->query($query);

    while( $row = $result->fetch_assoc()) 
    {
       if ($row != 0) { 
       $title = $row['title'];
    }
    }

不胜感激。

注意:$q中存放的是搜索关键词,然后代码将其展开,分2步搜索关键词: 1- 作为一个句子使用 ($q as it is)。 2- 它在展开 $q 后搜索每个关键字作为数组(这里是 "foreach" 所做的部分)。 之后,代码循环使用 "while" 来查找与搜索请求匹配的所有结果。

使用 LIMIT。

SELECT * FROM table WHERE para LIKE '%$q%' LIMIT 2

您可以限制 MySQL 查询中的结果数量,如下所示:

$query = "SELECT * FROM table WHERE para LIKE '%$q%' LIMIT 5";

这会将其限制为 5 个结果。想要10就改成10

完成查询后使用 LIMIT。

此外,如果您希望结果按 table 中的某些字段排序,您还可以说“ORDER BY fieldname ASC|DESC”

如下:

$q = "some keywords for search"; // always escape
$keys = explode( " ",$q );
$query = "SELECT * FROM table WHERE para LIKE '%$q%' ";

foreach($keys as $k)
{
    $query .= " OR para LIKE '%$k%'";
}

$query .= " LIMIT 10"; //<<<<<<<<<<<<<<<    

$result = $mysqli->query($query);

while( $row = $result->fetch_assoc()) 
{
   if ($row != 0) { 
   $title = $row['title'];
}