排序php/MySQL搜索结果
我有一个有大约50名导师的辅导网站。我想把搜索结果分成5页,每页10名导师 结果是加权的,所以它们不是按照主键的顺序出现的。我想这会阻止我在第一页写这样的查询:排序php/MySQL搜索结果,php,mysql,sql,search,Php,Mysql,Sql,Search,我有一个有大约50名导师的辅导网站。我想把搜索结果分成5页,每页10名导师 结果是加权的,所以它们不是按照主键的顺序出现的。我想这会阻止我在第一页写这样的查询: SELECT * FROM teachers WHERE primary_key > 0 AND primary key < 11 从主键>0且主键11且主键
SELECT * FROM teachers WHERE primary_key > 0 AND primary key < 11
从主键>0且主键<11的教师中选择*
第二页的查询如下:
SELECT * FROM teachers WHERE primary_key > 11 AND primary key < 21
从主键>11且主键<21的教师中选择*
那么,我如何系统地一次只接受10行,记住它们是什么,然后为下一页选择接下来的10行呢?我是否应该有第二个键,在计算结果的权重后为其指定数字顺序?这可能是一个临时专栏吗?这是在PHP/MySQL环境中分割结果的糟糕方法吗?您可以使用ORDER BY对结果进行排序,也可以使用LIMIT来声明限制
SELECT * FROM teachers ORDER BY primary_key LIMIT 10
要从某一点开始(即11,仅显示10),您可以添加以下内容:
SELECT * FROM teachers ORDER BY primary_key LIMIT 11,10
然后,您可以创建一个PHP脚本来生成限制偏移量的值。。。那么21,10,31,10等等
您可以使用限制
SELECT * FROM teachers LIMIT 0, 10;
SELECT * FROM teachers LIMIT 10, 10;
第一个数字是从哪里开始,第二个数字是你想要得到多少结果
我有一个实现,其中我有一个php脚本来获取页码,第一个数字是一个变量$limit\u start。它从post或get获取页码
$limit_start = ($this->page - 1) * 10;
$query = 'SELECT * FROM teachers LIMIT '.$limit_start.', 10';
您应该在查询中使用偏移限制来执行此操作。第1页将是:
SELECT * FROM teachers limit 0,10
第2页:
SELECT * FROM teachers limit 10,10
第3页:
SELECT * FROM teachers limit 20,10
。。。等等第一个值是偏移量,第二个值是要检索的行数 全部选择并用PHP处理。@johncode谢谢john,有时候你只需要知道输入Google的内容就可以了。Select语句中有一个限制。对于如此小的数据集,我会选择@DerekS的解决方案。@。