English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP базовый учебник

PHP продвинутый учебник

PHP & MySQL

PHP справочник

PHP MySQL LIMIT

В этом руководстве вы узнаете, как использовать PHP для чтения ограниченного количества записей из таблицы MySQL.

ограничивает результат набора

LIMITпредложение используется для ограниченияSELECTЧисло возвращаемых строк. Эта функция очень полезна для оптимизации времени загрузки страницы и повышения читаемости сайта. Например, можно использовать пагинацию для разделения большого количества записей на несколько страниц, и когда пользователь запрашивает страницу, нажимая на ссылки на страницу, загружается ограниченное количество записей из каждой страницы.

Базовая грамматика предложения LIMIT может быть дана следующим образом:

SELECT column_name(s) FROM table_name LIMIT row_offset, row_count;

Предложение LIMIT принимает один или два параметра, которые должны быть неотрицательными целыми числами:

  • Когда указаны два параметра, первый параметр определяет смещение первого возвращаемого строки, то есть точку начала, а второй параметр определяет количество строк, которые должны быть возвращены. Смещение первой строки равно 0 (не 1).

  • Когда указан один параметр, он определяет максимальное количество строк, которое должно быть возвращено из начальной точки.

Например, чтобы получить первые три строки, можно использовать следующий запрос:

SELECT * FROM persons LIMIT 3;

Чтобы получить 2-4 строки результата (включительно), можно использовать следующий запрос:

SELECT * FROM persons LIMIT 1, 3;

Используем оператор LIMIT в предложении SELECT для выполнения SQL-запроса, а затем передаем его функции mysqli_query() в PHP для выполнения запроса с ограниченным количеством записей. Давайте рассмотрим таблицу persons в демонстрационной базе данных:

+----+------------+-----------+----------------------+
| id | first_name | last_name | email               |
+----+------------+-----------+----------------------+
|  1 | Peter      | Parker    | [email protected] |
|  2 | John       | Rambo      | [email protected]   |
|  3 | Clark      | Kent      | [email protected]   |
|  4 | John       | Carter    | [email protected]  |
|  5 | Harry      | Potter    | [email protected] |
+----+------------+-----------+----------------------+

PHP-код в следующем примере показывает толькоpersonsТри строки в таблице.

Пример: метод面向 процесса

<?php
/*Попытка подключения к серверу MySQL. Предполагается, что MySQL работает.
Сервер с настройками по умолчанию (пользователь без пароля "root"). */
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Проверка подключения
if($link === false){
    die("Ошибка: Невозможно подключиться. " . mysqli_connect_error());
}
 
//Попытка выполнения запроса выбора
$sql = "SELECT * FROM persons LIMIT 3";
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = mysqli_fetch_array($result)){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //Закрыть результат
        mysqli_free_result($result);
    } else{
        echo "Не найдены записи, соответствующие вашему запросу.";
    }
} else{
    echo "Ошибка: Невозможно выполнить $sql. " . mysqli_error($link);
}
 
//Закрываем соединение
mysqli_close($link);
?>

Пример: объектно-ориентированный метод

<?php
/*Попытка подключения к серверу MySQL. Предполагается, что MySQL работает.
Сервер с настройками по умолчанию (пользователь без пароля "root"). */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Проверка подключения
if($mysqli === false){
    die("Ошибка: Невозможно подключиться. " . $mysqli->connect_error);
}
 
//Попытка выполнения запроса выбора
$sql = "SELECT * FROM persons LIMIT 3";
if($result = $mysqli->query($sql)){
    if($result->num_rows > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch_array()){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //Освобождаем результатный набор
        $result->free();
    } else{
        echo "Не найдены записи, соответствующие вашему запросу.";
    }
} else{
    echo "Ошибка: Невозможно выполнить $sql. " . $mysqli->error;
}
 
//Закрываем соединение
$mysqli->close();
?>

Пример: метод PDO

<?php
/*Попытка подключения к серверу MySQL. Предполагается, что MySQL работает.
Сервер с настройками по умолчанию (пользователь без пароля "root"). */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //Установить режим ошибок PDO на исключения
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("Ошибка: Невозможно подключиться. " . $e->getMessage());
}
 
//Попытка выполнения запроса выбора
try{
    $sql = "SELECT * FROM persons LIMIT 3";  
    $result = $pdo->query($sql);
    if($result->rowCount() > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch()){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //Освобождаем результатный набор
        unset($result);
    } else{
        echo "Не найдены записи, соответствующие вашему запросу.";
    }
} catch(PDOException $e){
    die("Ошибка: Не удалось выполнить $sql. ". $e->getMessage());
}
 
//Закрываем соединение
unset($pdo);
?>

Ограничив результатный набор, вывод будет выглядеть следующим образом:

+----+------------+-----------+----------------------+
| id | first_name | last_name | email               |
+----+------------+-----------+----------------------+
|  1 | Peter      | Parker    | [email protected] |
|  2 | John       | Rambo      | [email protected]   |
|  3 | Clark      | Kent      | [email protected]   |
+----+------------+-----------+----------------------+