我编写了一个PHP / MySQLi前端,用户可以在其中输入SQL查询,然后服务器将结果返回到表中(或在INSERT
和UPDATE
上打印正常)< / 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
?
答案 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
如果有帮助,请告诉我们。