Я написал интерфейс PHP / MySQLi, в котором пользователь может вводить запросы SQL, а затем сервер возвращает результаты в виде таблицы (или печатает OK на INSERT
с и UPDATE
s)
Распечатка результатов может занять очень много времени (например, SELECT * FROM movies
) в отрывке IMDb с примерно 1,6 млн. фильмов, 1,9 млн. актеров и 3,2 млн. ключевых слов я ограничил выход до 50 строк, отменив цикл печати после 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
в / в запросах?
Вы можете использовать там запросы и добавить «LIMIT 50» к нему.
И если они добавили LIMIT сами, просто отфильтруйте его с помощью регулярных выражений и все равно добавьте свой LIMIT.
Я считаю, что вы все равно должны создать себе пагинатор, избегая использования 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;
надеюсь, это поможет
Вы можете создать функцию.
https://dev.mysql.com/doc/refman/5.0/en/create-function.html
Дайте нам знать, если это поможет.