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

时间:2015-03-30 02:22:47

标签: php mysql mysqli foreach while-loop

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

    $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包含搜索关键字,然后代码将其展开,并分两步搜索关键字: 1-作为一句使用($ q原样)。 2-它在爆炸$ q后搜索每个关键字作为一个数组(这是" foreach"的部分)。 之后,代码循环使用"而#34;查找与搜索请求匹配的所有结果。

3 个答案:

答案 0 :(得分:2)

完成查询后使用LIMIT。

另外,如果您希望按表中的某些字段对结果进行排序,您也可以说“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'];
}

答案 1 :(得分:0)

使用LIMIT。

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

答案 2 :(得分:0)

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

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

这将限制为5个结果。如果您想要10,请将其更改为10