PHP MySQL进行分页
你的SQL SELECT语句可能会返回成千上万条记录,但把所有结果都显示在一页上不是一个好主意。因此,我们可以根据需要将结果分成多个页面。
分页意味着将查询结果显示在多个页面中,而不仅仅是放在一个很长的页面中。
MySQL通过使用 LIMIT 子句来生成分页,该子句接受两个参数。第一个参数是偏移量(即从第几条记录开始),第二个参数是从数据库返回多少条记录。
下面是一个使用 LIMIT 子句生成分页的简单示例。
示例
尝试以下示例,每页显示10条记录。
<html>
<head>
<title>Paging Using PHP</title>
</head>
<body>
<?php
dbhost = 'localhost:3036';dbuser = 'root';
dbpass = 'rootpassword';rec_limit = 10;
conn = mysql_connect(dbhost, dbuser,dbpass);
if(! conn ) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('test_db');
/* Get total number of records */sql = "SELECT count(emp_id) FROM employee ";
retval = mysql_query(sql, conn );
if(!retval ) {
die('Could not get data: ' . mysql_error());
}
row = mysql_fetch_array(retval, MYSQL_NUM );
rec_count =row[0];
if( isset(_GET{'page'} ) ) {page = _GET{'page'} + 1;offset = rec_limit *page ;
}else {
page = 0;offset = 0;
}
left_rec =rec_count - (page *rec_limit);
sql = "SELECT emp_id, emp_name, emp_salary ". "FROM employee ".
"LIMIToffset, rec_limit";retval = mysql_query( sql,conn );
if(! retval ) {
die('Could not get data: ' . mysql_error());
}
while(row = mysql_fetch_array(retval, MYSQL_ASSOC)) {
echo "EMP ID :{row['emp_id']} <br> ".
"EMP NAME : {row['emp_name']} <br> ".
EMP SALARY : {row['emp_salary']} <br> ".
"--------------------------------<br>";
}
if( page>0 ) {last = page - 2;
echo "<a href = \"_PHP_SELF?page = last\">Last 10 Records</a> |";
echo "<a href = \"_PHP_SELF?page = page\">Next 10 Records</a>";
}else if(page == 0 ) {
echo "<a href = \"_PHP_SELF?page =page\">Next 10 Records</a>";
}else if( left_rec<rec_limit ) {
last =page - 2;
echo "<a href = \"_PHP_SELF?page =last\">Last 10 Records</a>";
}
mysql_close($conn);
?>
</body>
</html>