我正在使用本教程来学习如何对结果集进行分页。问题是,该教程正在从SQL数据库中获取结果。
我正在使用XML文件的结果。
我的问题是:PHP中是否有一个与教程使用的SQL LIMIT函数等效的函数?以及如何更改以下代码?
首先,本教程使用这些行来获得总结果:
$sql = "SELECT COUNT(id) FROM testimonials WHERE approved='1'";
$query = mysqli_query($db_conx, $sql);
$row = mysqli_fetch_row($query);
// Here we have the total row count
$rows = $row[0];
我正在使用此行
$total_results = $xml->rs->tr;
// This is the total number of results we want to allow per page
$results_per_page = 20;
// This tells us the page number of our last page
$last = ceil($total_results/$results_per_page);
// This makes sure $last cannot be less than 1
if($last < 1){
$last = 1;
}
// Establish the $pagnum variable
$pagenum = 1;
// Get pagenum from url if it is present
if(isset($_GET['pn'])) {
$pagenum = preg_replace('#[^0-9]#', '', $_GET['pn']);
}
// This makes sure the page numner isn't below 1
if ($pagenum <1) {
$pagenum = 1;
} elseif ($pagenum > $last {
$pagenum = $last;
}
这是我感到困惑的地方。如何更改以下代码以使用我的xml结果?
// This sets the range of rows to query for the chosen $pagenum
$limit = 'LIMIT ' .($pagenum - 1) * $results_per_page .',' .$results_per_page;
// This is your query again, it is for grabbing just one page worth of rows by applying $limit
$sql = "SELECT id, firstname, lastname, datemade FROM testimonials
WHERE approved='1' ORDER BY id DESC $limit"; $query = mysqli_query($db_conx, $sql)
答案 0 :(得分:3)
PHP中的SQL LIMIT只是对函数array_slice()
的调用。例如:
// Assuming your data is contained in an array $array
$array = array(0,1,2,3,4,5,6,7);
$slice = array_slice($array,3,4);
print_r($slice);
输出:
Array
(
[0] => 3
[1] => 4
[2] => 5
[3] => 6
)
工作示例:http://codepad.org/sGcyPimT
您可以使用array_slice的int $offset
和$int length
参数控制SQL的LIMIT和OFFSET。
答案 1 :(得分:0)
这实际上取决于你正在使用的XML库,如果它返回简单数组你可以使用array_slice()
http://php.net/manual/en/function.array-slice.php,如果你使用一些自定义XML库,应该有一个方法可以帮助你做这样的事情。尝试使用以下内容显示所有可用方法:get_class_methods($xml)