相当于PHP中的SQL限制函数

时间:2014-10-30 13:06:17

标签: php sql

我正在使用本教程来学习如何对结果集进行分页。问题是,该教程正在从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)

2 个答案:

答案 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_sliceint $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)