您好我正在尝试分页数据而不创建这么多功能。我决定合并函数(一个加载一些问题,一个加载所有问题),从我的数据库中获取所有数据。
我有这个函数调用我的分页:
$this->get_questions_incrementally(null, $id, $page_no, $items_per_page);
我通常在一次收到所有问题时这样做:
$this->get_questions_incrementally(null, $id, $page_no=0, $items_per_page=999999);
如何将$items_per_page
表示为无穷大?
我是一个非常糟糕的主意,实际上是否有比这更好的解决方案?
答案 0 :(得分:1)
我的建议是获得哨兵价值。你真的不想获取无限数量的行。你想要所有的行。
如果您可以控制您正在调用的方法,那么合理的做法是接受$items_per_page = -1
作为标记值,表明您想要所有结果。
或者,如果您无法控制该代码,那么正如@zerkms建议的那样,我会使用PHP_INT_MAX。
这可以像这样实施
function get_questions_incrementally($a, $id, $page_number, $items_per_page) {
if ($items_per_page == -1) {
$LIMIT = "";
} else {
$LIMIT = " LIMIT $items_per_page";
}
//blah blah query building
//at this point $query is ready for attachment of a LIMIT clause
$query = $query . $LIMIT;
//run query
}
答案 1 :(得分:1)
当我有多个参数(其中一些可能是可选的)时,我首选的方法是使用setter函数创建一个对象。这样你就可以做到:
$objectname->setId($id);
$objectname->setAll(true);
在您的对象中,您还可以实现$current_question
或$current_page
和$questions_per_page
等变量,并拥有一个名为get_next_question_set()
的函数。
但是,如果您更喜欢使用函数式编程,并且因为PHP是松散类型的,您也可以这样做:
$this->get_questions_incrementally(null, $id, $page_no=0, $items_per_page="ALL");
然后检查一下这个值是否等于" ALL"或整数。