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()
所以我怀疑我的查询中仍有问题,但我无法弄清楚是什么。
答案 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;