Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
排序php/MySQL搜索结果_Php_Mysql_Sql_Search - Fatal编程技术网

排序php/MySQL搜索结果

排序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且主键

我有一个有大约50名导师的辅导网站。我想把搜索结果分成5页,每页10名导师

结果是加权的,所以它们不是按照主键的顺序出现的。我想这会阻止我在第一页写这样的查询:

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的解决方案。@。