English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве вы узнаете, как использовать 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(); ?>
<?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] | +----+------------+-----------+----------------------+