限制所有MySQL查询的结果

时间:2015-03-25 21:25:31

标签: php mysql mysqli sql-limit

我编写了一个PHP / MySQLi前端,用户可以在其中输入SQL查询,然后服务器将结果返回到表中(或在INSERTUPDATE上打印正常)< / p>

打印结果可能需要很长时间(例如SELECT * FROM movies)IMDb提取中包含约1.6M电影,1.9M演员和3.2M关键字,我限制输出通过在50次迭代后取消打印for循环来到50行。

但是,查询本身也需要相当长的时间,因此我希望可以设置全局最大行返回值,但是是否使用LIMIT关键字。我只打算将服务器用于我自己的练习,但是因为我班上的一些人正在努力学习老师提供的前端(Windows EXE,但是有一半的人使用Mac / Linux),我决定让它可以访问他们也是。但是我希望让我的Debian虚拟机不会崩溃,因为 - 好吧,基本上它会是一个DDoS。

澄清(全球限制为50的例子):

SELECT * FROM movies;
> First 50 rows
SELECT * FROM movies LIMIT 10;
> First 10 rows
SELECT * FROM movies LIMIT 50,100;
> 50 rows (from 50 to 99)

是否有可能使用PHP / MySQLi或MySQL服务器本身来限制返回值的数量?或者我是否必须在查询中追加/替换LIMIT

3 个答案:

答案 0 :(得分:1)

你可以使用那里的查询并添加“LIMIT 50”。

如果他们通过他们添加了LIMIT,那么只需使用正则表达式对其进行过滤,然后仍然添加LIMIT。

答案 1 :(得分:0)

我相信你必须建立自己的分页器,避免使用LIMIT声明我真的不可能相信。

以下是我对Paginator的建议:

if($_REQUEST['page'] == ""){
 $page = 1;
}else{
 $page = $_REQUEST['page']; // perhaps double check if numeric
}

$perpage = 50;
$start = ($page - 1) * $perpage;

$limit_string = " LIMIT ". $start . "," . $perpage ;

$query = "SELECT * FROM movies";
$query .= $limit_string;

希望有所帮助

答案 2 :(得分:0)

您可以创建一个功能。 https://dev.mysql.com/doc/refman/5.0/en/create-function.html

如果有帮助,请告诉我们。