如何只获取mysql SELECT语句的前几个匹配项

时间:2013-11-22 13:04:01

标签: mysql select

 if(strcmp($sort,"popular") == 0){
      "SELECT * FROM projects WHERE project_id IN ($idResults) ORDER BY rating";
 }

我首先按流派选择项目,结果ID在$ idResults中,然后我希望它们全部按评级排序。 这可能是一个非常长的结果列表,所以现在我的问题是如何调整SELECT以便我只得到第一个说7个结果(在下一次调用7到14之间等)

提前致谢;)


我现在试过,

  

$ query =“SELECT * FROM projects WHERE project_id IN”.implode(',',$ idResults)。“ORDER BY rating LIMIT”。$ count。“,7”;

因为我得到一个php错误,有一个数组到字符串转换,所以我在数组中的每个元素之后添加了一个“,”并将其内爆为一个字符串。

但如果我继续这样做:

  $result = $this->dbc->query($query);
  $resultLines = array();
  while($row = $result->fetch_array(MYSQLI_BOTH)){
      $resultLines[] = $row;
  }
  return resultLines;

我收到错误:

  

致命错误:在第66行的 * 中的非对象上调用成员函数fetch_array()

所以我怀疑我的查询中仍有问题,但我无法弄清楚是什么。

1 个答案:

答案 0 :(得分:2)

使用LIMIT子句 - LIMIT 7

对于后续查询,您可以使用完整的LIMIT子句 - 即LIMIT offset, count。例如:

SELECT * FROM projects WHERE project_id IN ($idResults) ORDER BY rating LIMIT 0, 7;
SELECT * FROM projects WHERE project_id IN ($idResults) ORDER BY rating LIMIT 7, 7;