[英]Limit results of all MySQL queries
我編寫了一個PHP / MySQLi前端,用戶可以在其中輸入SQL查詢,然后服務器將結果返回到表中(或在INSERT
和UPDATE
上打印OK)。
由於打印結果可能需要很長的時間(例如SELECT * FROM movies
),而包含大約160萬部電影,190萬個actor和320萬個關鍵字的IMDb提取物中,我通過取消打印循環后將輸出限制為50行50次迭代。
但是,查詢本身也要花費一些時間,因此我希望可以設置全局最大行返回值,無論是否使用LIMIT
關鍵字。 我只是打算將服務器用於自己的實踐,但是由於班上的某些人在為老師提供的前端而苦苦掙扎(Windows EXE,但班上的一半使用Mac / Linux),因此我決定使其可以訪問他們也是。 但是我想防止我的Debian VM崩潰,因為-基本上,這將是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
?
您可以在此處使用查詢,並在其中添加“ LIMIT 50”。
如果他們自己添加了LIMIT,則只需使用正則表達式將其過濾掉,然后仍然添加LIMIT。
我相信您無論如何都必須建立自己的分頁器,我相信避免使用LIMIT
語句是不可能的。
這是我對分頁器的建議:
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;
希望能有所幫助
您可以創建一個函數。 https://dev.mysql.com/doc/refman/5.0/en/create-function.html
讓我們知道是否有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.