Лекция

Тема: «Работа с базой данных MySQL в PHP»

План лекции

1.       Введение

2.       Создание базы данных с помощью phpMyAdmin

3.       Соединение с базой данных

4.       Запросы к базе данных

5.       Отображение данных из БД MySQL на php-странице

6.       Обработка команд SQL в PHP

 

1. Введение

 

База данных – это инструмент, который позволяет хранить и обрабатывать контент сайта, т.е. все медийные материалы, которые показываются пользователю в браузере. С помощью СУБД осуществляется выборка, добавление, удаление и изменение данных. Также с использованием базы данных с легкостью решаются такие задачи как поиск по сайту, разбиение на страницы, регистрация и авторизация пользователей. Именно поэтому в основные инструменты веб-разработчика включается СУБД.

В PHP работают с базами данных MySQL. И эта работа осуществляется с помощью программного обеспечения phpMyAdmin.

phpMyAdmin – это бесплатный программный инструмент, написанный на PHP, предназначенный для управления администрированием MySQL через Интернет. phpMyAdmin поддерживает широкий спектр операций на MySQL. Часто используемые операции (управление базами данных, таблицами, столбцами, отношениями, индексами, пользователями, разрешениями и т.д.) могут выполняться через пользовательский интерфейс, в то время как у вас все еще есть возможность напрямую выполнять любую инструкцию SQL. Т.е. используя phpMyAdmin, несколькими щелчками мыши можно создавать базу данных, предоставлять привилегии для пользователя MySQL для этой базы данных и выполнять любые другие операции над БД.

 

2. Создание базы данных с помощью phpMyAdmin

Создание БД с помощью phpMyAdmin рассмотрим на следующем примере, и в лекции все примеры будет строить на основе этой БД.

 

Пример. Создать базу данных test.

БД test содержит таблицу students с четырьмя полями: id, fam (фамилия), age (возраст), stip (стипендия). Таблица имеет данные:

 

id

fam

age

stip

1

Антонов

16

1500

2

Белов

17

1200

3

Ветров

16

1300

4

Донцов

18

1400

5

Егоров

20

1200

6

Калинин

19

1400

 

Выполнение задания:

 

Примечание. Если на вашем ПК установлен сервер MySQL, то перед работой с phpMyAdmin остановите сервер MySQL с помощью команды net stop mysql. Эту команду записываете в командной строке (меню Пуск - Выполнить).

В случае, если командная строка не отображается в Пуске, сначала настройте меню Пуск на отображение пункта Выполнить (Панель управления – Меню Пуск и в появившемся окне найдите кнопку Настроить, далее установите флажок возле команды Выполнить и примените изменения).

 

Если на вашем ПК не установлен сервер MySQL, или он уже остановлен, то следующим действием будет запуск Денвера через Run.exe. Проверьте, что локальный web-сервер запущен. Для этого в браузере в адресной строке введите localhost. Убедитесь, что Денвер заработал. Не выходя из браузера, пролистайте страницу до таблицы:

 

В этой таблице, нажав на ссылку http://localhost/Tools/phpMyAdmin, переходите в phpMyAdmin.

 

 

Слева в окне отображаются имеющиеся базы данных, справа – настройки. В phpMyAdmin работайте как пользователь root и используйте пароль – отсутствие пароля.

В поле под текстом Create new database введите название базы данных test, выберите кодировку Юникод:

 

 

Нажмите кнопку Create – создать БД.

 

Перейдите к следующему шагу – созданию таблицы. В появившемся окне:

 

 

укажите имя таблицы (students), количество столбцов в ней (4) и нажмите кнопку Go – таблица создана:

 

 

Затем указываете поля таблицы students, их типы. Нам необходимы такие поля:

id – тип integer, поставьте галочку auto_increment (A_I) (чтобы в этом столбце номера нумеровались автоматически), укажите, что это уникальное поле (primary);

fam (фамилия) – тип varchar, размером в 30 знаков;

age (возраст) - тип integer;

stip (стипендия) - тип float.

 

 

Укажите тип таблицы MyISAM и кодировку для таблицы Юникод. Нажмите кнопку Save.

 

Получаем такой вид таблицы:

 

 

Выбираете вкладку Insert и добавляете следующие данные в таблицу:

 

id

fam

age

stip

1

Антонов

16

1500

2

Белов

17

1200

3

Ветров

16

1300

4

Донцов

18

1400

5

Егоров

20

1200

6

Калинин

19

1400

 

Можно заполнять по одной записи или по несколько. Для сохранения записи нажимаете кнопку Go.

 

Замечание: поле id не заполняем, т.к. оно наращивается автоматически.

 

После внесения всех данных перейдите на вкладку Browse, увидите заполненную вами таблицу:

 

 

Строки можно редактировать, нажав на кнопку .

 

Созданные вами базы данных (в том числе и БД test) хранятся в папке user/local/mysql-5.1/data.

После создания БД поработайте с ней средствами PHP (будет рассмотрено ниже). phpMyAdmin и базу данных test оставьте открытыми во вкладке браузера.

 

3. Соединение с базой данных

Любая программа на языке PHP, которая собирается работать с MуSQL базой данных, должна состоять из следующих обязательных базовых шагов:

1. Установить связь с MySQL сервером.

2. Выбрать базу данных для работы.

3. Посылать команды MySQL серверу и получать ответы.

4. Обработать результаты.

5. Закрыть связь с MySQL сервером.

 

Работа с БД из PHP осуществляется с помощью трех основных функций:

mysql_connect – соединение с сервером и базой данных;

mysql_query – универсальная функция отправки запросов к БД;

mysql_error – вывод ошибок.

 

Прежде, чем начать работать с базой данных из PHP, нужно установить соединение с сервером, на котором эта база находится.

Делается это с помощью функции PHP mysql_connect, которая принимает 3 параметра: имя хоста (сервера), имя пользователя, под которым мы работаем с базой и пароль для этого пользователя.

Если вы работаете на своем компьютере, то это будут 'localhost', 'root' и пароль в виде пустой строки (на некоторых серверах он тоже может быть root или 111). Если ваша база данных в Интернете – то эти данные дает вам хостер.

 

Создайте index.php – файл для работы с БД test с помощью PHP. Далее будете работать с файлом index.php и весь код записываете в него.

Файл index.php сохраняете в каталоге home/localhost/www/Ваша_папка.

 

Установите соединение с базой данных test:

 

<?php

     //устанавливаем доступы к базе данных:

 

//переменная $host - имя хоста, на локальном компьютере (в нашем случае,  это localhost)

     $host = 'localhost';

    

//переменная $user – имя пользователя, по умолчанию это root

     $user = 'root';

 

     //переменная $password – пароль, он по умолчанию пустой

     $password = '';

 

//$db_name – имя базы данных

     $db_name = 'test';

 

     //создаем соединение, используя наши доступы:

     mysql_connect($host, $user, $password);

 

     //выбираем базу данных

     mysql_select_db($db_name);

 

     //устанавливаем кодировку (не обязательно)

     mysql_query("SET NAMES ' utf8'");

?>

 

Замечание:

Чтобы не возникало проблем с кодировками следует придерживаться простых правил:

1.                  Базу данных следует создавать в кодировке utf8_general_ci.

2.                  Документ PHP должен быть в кодировке utf8.

3.                  Таблицы в БД должны быть в utf8_general_ci.

4.                  После команды mysql_connect добавьте запрос, который установит кодировку для существующего соединения:

mysql_query("SET NAMES  'utf8'  ")

или

mysql_query("SET NAMES  'cp1251'  ")

 

Проверяем выполнение кода, в адресной строке браузера вводим localhost/Ваша_папка/index.php или просто localhost/Ваша_папка. Если ошибок нет, продолжаем работу с базой данных, т.к. пока страница index.php пустая. Далее необходимо будет отобразить данные из таблицы students на странице index.php (Рассмотрим ниже в пункте 6).

 

4. Запросы к базе данных

Запросы к базе данных представляют собой строки (на языке SQL), которые вставляем в функцию PHP mysql_query.

 

mysql_query(‘SQL-запрос’)посылает один запрос (посылка нескольких запросов не поддерживается) активной базе данных сервера.

 

Возвращаемые значения

Для запросов SELECT, SHOW, DESCRIBE, EXPLAIN и других запросов, возвращающих результат из нескольких строк, mysql_query() возвращает дескриптор результата запроса (resource), или FALSE в случае ошибки.

Для других типов SQL-запросов, INSERT, UPDATE, DELETE, DROP и других, mysql_query() возвращает TRUE в случае успеха и FALSE в случае ошибки.

Полученный дескриптор результата нужно передать в функцию mysql_fetch_assoc() или любую другую функцию, работающую с результатами запросов.

Используйте mysql_num_rows() для выяснения количества записей в результате SELECT-запроса или mysql_affected_rows() для выяснения количества обработанных строк запросами DELETE, INSERT, REPLACE и UPDATE.

mysql_query() также завершится с ошибкой и вернет FALSE, если у пользователя нет доступа к какой-либо из таблиц, фигурирующих в запросе.

 

Пример записи запроса

 

//отбираем все записи из таблицы students

mysql_query("SELECT * FROM students");

 

Проще и понятнее, если текст запроса будет храниться в переменной $query:

 

//отбираем все записи из таблицы students

$query = "SELECT * FROM students";

//выполняем запрос

mysql_query($query);

 

Имя таблицы также лучше хранить в переменной:

 

//задаем имя таблицы в переменной $table

$table = 'students';

//отбираем все записи из таблицы students

$query = "SELECT * FROM " . $table;

//выполняем запрос

mysql_query($query);

 

 

В тексте запроса, который записан в двойных кавычках, имя переменной $table можно указывать, не разрывая текст оператором присоединения, т.е.

 

$query = "SELECT * FROM $table";

 

Так как запрос отбирает данные из таблицы students, и с этими данными будет проводиться в дальнейшем работа (отображение на странице index.php), то результат запроса сохраняем в переменную $result:

 

<?php

//задаем имя таблицы в переменной $table

$table = 'students';

//отбираем все записи из таблицы students

$query = "SELECT * FROM $table";

     //выполняем запрос

$result = mysql_query($query);

?>

 

Усложним запрос, отберем записи из таблицы students, у которых возраст больше или равен 18, т.е. age>=18.

 

<?php

//задаем имя таблицы в переменной $table

$table = 'students';

//отбираем все записи из таблицы students

$query = "SELECT * FROM $table WHERE age>=18";

     //выполняем запрос

$result = mysql_query($query);

?>

 

В результате запроса, если прошло всё нормально, переменная $result будет содержать результирующую таблицу, а точнее дескриптор, который следует передать следующей функции php, для прочтения и обработки данных. Для обработки полученного набора записей существуют следующие функции PHP:

mysql_result() - получить необходимый элемент из набора записей;

mysql_fetch_array() - занести запись в массив;

mysql_fetch_row() - занести запись в массив;

mysql_fetch_assoc() - занести запись в ассоциативный массив;

mysql_fetch_object() - занести запись в объект.

 

Также можно определить количество содержащихся записей и полей в результате запроса. Функция mysql_num_rows() позволяет узнать, сколько записей содержит результат запроса:

$rez = mysql_query("SELECT * FROM students");

echo "В таблице students ".mysql_num_rows($rez)." записей";

 

Запись состоит из полей (колонок). С помощью функции mysql_num_fields() можно узнать, сколько полей содержит каждая запись результата:

$rez = mysql_query("SELECT * FROM students");

echo "В таблице students ".mysql_num_fields($rez)." полей ";

 

Итак, после выполнения запроса результат отбора хранится в переменной $result, но, по-прежнему, не отображен на странице index.php.

 

Замечание. Принято правило, по которому команды SQL следует писать в верхнем регистре, а все остальное – в нижнем. Это относится к командам SELECT, UPDATE, FROM, DELETE, WHERE и другим такого рода. Конечно, синтаксической ошибки не будет, если вы напишите их маленькими буквами, но принято большими. Запросы принято брать в двойные кавычки.

 

5. Отображение данных из БД MySQL на php-странице

Продолжим работу с данными, отобранными из таблицы students. Пока этот результат хранится в переменной $result.

Код страницы index.php имеет вид:

 

<?php

//устанавливаем доступы к базе данных:

//переменная $host - имя хоста, на локальном компьютере (в нашем случае,  это localhost)

$host = 'localhost';

//переменная $user – имя пользователя, по умолчанию это root

$user = 'root';

//переменная $password – пароль, он по умолчанию пустой

$password = '';

//$db_name – имя базы данных

$db_name = 'test';

//создаем соединение, используя наши доступы:

mysql_connect($host, $user, $password);

//выбираем базу данных

mysql_select_db($db_name);

//устанавливаем кодировку (не обязательно)

mysql_query("SET NAMES ' utf8'");

//задаем имя таблицы в переменной $table

$table = 'students';

//отбираем все записи из таблицы students

$query = "SELECT * FROM $table";

//выполняем запрос

$result = mysql_query($query);

?>

 

После того, как сделали запрос к базе, в переменной $result будет лежать результат этого действия. Однако лежит он не в той форме, которая нам нужна в PHP, а в той форме, в которой его прислала нам база.

Достать результат в нормальном виде (в виде массиве) можно с помощью функции mysqli_fetch_assoc, которая возвращает ассоциативный массив, ключами которого будут имена полей.

Функция mysqli_fetch_assoc считывает одну строку результата, который прислала база данных. Чтобы отобразить все строки из переменной $result используем цикл while.

 

После команды $result = mysql_query($query) добавляем следующий код:

 

//Преобразуем то, что отдала база в массив PHP с именем $row

//пока происходит считывание строк из $result

while( $row = mysql_fetch_assoc($result) )

{

//выводим данные из массива $row:

     echo $row['fam']." со стипендией ". $row['stip']." руб <br>";

}

?>

 

Итоги: 

1) в цикле while считываем построчно результат из базы данных;

2) когда цикл дойдет до последней строки функция mysqli_fetch_assoc вернет false и цикл while закончит свою работу;

3) массив $row имеет поля такие же, как и база данных students, и обращение к ним осуществляется так: $row['id'], $row['fam'], $row['age'], $row['stip'].

 

Чтобы данные из базы были выведены в табличном виде, теги создания таблицы, строк и ячеек напечатаем с помощью команды echo. Изменим вышеприведенный код:

           

//Делаем запрос к БД, результат запроса храним в $result:

$result = mysql_query($query);

 

//Печатаем тег начала таблицы

echo '<table align="center" border="1">';

//Создаем шапку таблицы

//Начинаем первую строку

echo '<tr>';

//Создаем первую ячейку первого столбца

echo '<th>Номер</th>';

//Создаем первую ячейку второго столбца

echo '<th>Фамилия</th>';

//Создаем первую ячейку третьего столбца

echo '<th>Возраст</th>';

//Создаем первую ячейку четвертого столбца

echo '<th>Стипендия</th>';

//Завершаем первую строку

echo '</tr>';

// Делаем обход массива и вывод данных из таблицы students

while($row = mysql_fetch_assoc($result) )

{

    //печатаем очередную строку таблицы с данными

   echo '<tr align="center">';

   echo '<td>'.$row['id'].'</td>';

   echo '<td>'.$row['fam'].'</td>';

   echo '<td>'.$row['age'].'</td>';

   echo '<td>'.$row['stip'].'</td>';

   echo '</tr>';

}

//закрываем тег создания таблицы

echo '</table>';

?>

 

Обновите страницу index.php и просмотрите результат – это должна быть таблица:

 

 

6. Обработка команд SQL в PHP

 

Команда SELECT

Команда SELECT позволяет отобрать несколько строк из таблицы. Ее синтаксис следующий:

 

SELECT * FROM имя_таблицы WHERE условие_отбора;
 
Примеры использования команды SELECT рассмотрим ниже.
 

Выберем из нашей тестовой таблицы students студента с id равным 2:

<?php
      //В $result будет находиться одна строка с данными на Белова:
      $query = "SELECT * FROM students WHERE id=2";
      $result = mysql_query($query);
?>
 

Выберем из нашей таблицы students студентов с id больше 2:

<?php
      //В $result будут все студенты, кроме первого и второго:
      $query = "SELECT * FROM students WHERE id>2";
      $result = mysql_query($query);
?>

 

Выберем из нашей таблицы students студентов с id больше 2 включительно:

<?php
      //В $result будут все студенты, кроме первого:
      $query = "SELECT * FROM students WHERE id>=2";
      $result = mysql_query($query);
?>

 

Выберем из нашей таблицы students студентов с id, не равным 2:

<?php
      //В $result будут все студенты кроме Белова (потому что у него id равен 2):
      $query = "SELECT * FROM students WHERE id != 2";
      $result = mysql_query($query);
?>

 

Выберем из нашей таблицы students студентов возрастом 16 лет:

<?php
      //В $result будут Антонов и Ветров:
      $query = "SELECT * FROM students WHERE age=16";
      $result = mysql_query($query);
?>

 

Выберем из нашей таблицы students студентов со стипендией 1400:

<?php
      //В $result будут Донцов, Калинин:
      $query = "SELECT * FROM students WHERE stip=1400";
      $result = mysql_query($query);
?>

 

Выберем из нашей таблицы students студента с фамилией Егоров:

<?php
      //В $result будет только Егоров:
      $query = "SELECT * FROM students WHERE fam='Егоров' ";
      $result = mysql_query($query);
      /*
            Обратите внимание на кавычки: 
            поскольку вся строка запроса у нас лежит в двойных 
            кавычках, то строку 'Егоров' мы возьмем в одинарные!
      */
?>

Группировки условий

Если вам нужны сложные комбинации команд OR и AND то, так же, как в if, их можно группировать с помощью круглых скобок ( ), чтобы показать приоритет условий.

Давайте выберем всех студентов в возрасте от 16 лет до 18 лет (включительно) или со стипендией не менее 1400 руб (обратите внимание на расстановку скобок () - именно они группируют условия):

 

      SELECT * FROM students WHERE (age>=16 AND age<=18) OR (stip>=1400)
 

Выбор столбцов

В результат, который вернет нам база данных, не обязательно включать все столбцы.

Пусть необходимо узнать только фамилия и возраст студента, не вытягивая из базы данных всю остальную информацию:

 

<?php
      /*
            В $result будут только поля fam и age и не будет id, stip
            (звездочка *, которую мы ставили раньше, указывает вернуть ВСЕ столбцы):
      */
      $query = "SELECT fam, age FROM students";
      $result = mysql_query($query);
?>
 

Кроме того, можно выполнить частичное совпадение строки с помощью % в ключевых словах. Ниже будут показаны все студенты, фамилия которых начинается с “Ант”.

SELECT * FROM students WHERE fam LIKE 'Ант%';

 

Ниже будут показаны все студенты, фамилия которых заканчивается на “ов”.

SELECT * FROM students WHERE fam LIKE '%ов';

 

Вы также можете дать % в обоих направлениях. В этом случае, будет поиск для данного ключевого слова в любом месте строки. Ниже будут показаны все студенты, которые содержат “н” внутри их фамилии.

SELECT * FROM students WHERE fam LIKE '%н%';
 

Давайте выберем те записи, у которых возраст начинается с цифры 2, а затем идет еще один символ:

SELECT * FROM students WHERE age LIKE '2_'
 

Команда INSERT – вставка данных в БД

С помощью команды INSERT можно добавлять новую информацию в таблицу. Синтаксис такой:

 

      //ВСТАВИТЬ В имя_таблицы УСТАНОВИТЬ поле1=значение1, поле2=значение2, поле3=значение3
 
INSERT INTO имя_таблицы SET поле1=значение1, поле2=значение2, поле3=значение3...;

 

Давайте добавим нового студента Иванова, в возрасте 17 лет, со стипендией 1000 руб:

 

<?php
      //ВСТАВИТЬ В имя_таблицы УСТАНОВИТЬ фамилия='Иванов', возраст=17, стипендия=1000
      $query = "INSERT INTO students SET fam='Иванов', age=17, stip=1000";
      mysql_query($query);
      /*
            Обратите внимание на то, что строку 'Иванов' мы взяли в кавычки.
            Также обратите внимание на то, что поле id мы не указываем - 
            база данных сама поставит в него нужное значение.
            Результат запроса не записывается в переменную
      */
?>
 

Результат данного действия можно смотреть в phpMyAdmin.

 

Чтобы увидеть результат запроса и на странице index.php, выполните сначала этот запрос, а затем отберите данные из БД и отобразите их на странице, т.е. код будет иметь вид:

 

<?php
$host = 'localhost'; 
$user = 'root'; 
$password = ''; 
$db_name = 'test'; 
mysql_connect($host, $user, $password);
mysql_select_db($db_name);
mysql_query("SET NAMES 'cp1251'");
$table = 'students';
 
//составляем первый запрос на добавление студента 
//с фамилией Иванов, в возрасте 17 лет и со стипендией 1000 руб
//в таблицу students
$query = "INSERT INTO" . $table . "SET fam='Иванов', age=17, stip=1000";
//выполняем этот запрос
mysql_query($query);
//оставляем второй запрос на отбор всех записей из таблицы students
$query = "SELECT * FROM " . $table;
//результат запроса записываем в переменную
$result= mysql_query($query);
 
echo '<table align="center" border="1">';
echo '<tr>';
echo '<th>Номер</th>';
echo '<th>Фамилия</th>';
echo '<th>Возраст</th>';
echo '<th>Стипендия</th>';
echo '</tr>';
while($row = mysql_fetch_assoc($result) )
{
 echo '<tr align="center">';
 echo '<td>'.$row['id'].'</td>';
 echo '<td>'.$row['fam'].'</td>';
 echo '<td>'.$row['age'].'</td>';
 echo '<td>'.$row['stip'].'</td>';
 echo '</tr>';
}
echo '</table>';
?>

 

Что будет, если не указать значение какого-либо столбца?

<?php
      //ВСТАВИТЬ В имя_таблицы УСТАНОВИТЬ фамилия='Петров', стипендия=2000
      $query = "INSERT INTO students SET name='Петров', stip=1000";
      //Мы не выставили поле "возраст", хотя оно есть в таблице!
      mysql_query($query);
?>

Ошибки в данном случае не будет. База данных просто поставит значение по умолчанию для данной колонки. В нашем случае это будет ноль. Проверьте это!

 

Другой синтаксис INSERT

INSERT имеет альтернативный синтаксис:

<?php
      //ВСТАВИТЬ В имя_таблицы (поле1, поле2...) ЗНАЧЕНИЯ (значение1, значение2...)
      $query = "INSERT INTO students (поле1, поле2...) VALUES (значение1, значение2...)";
      mysql_query($query);
?>

 

Давайте добавим нового студента Кравцова, в возрасте 20 лет, со стипендией 2000 руб с помощью альтернативного синтаксиса:

<?php
      //ВСТАВИТЬ В students (name, age, stip) ЗНАЧЕНИЯ ('Кравцов', 20, 2000)"
      $query = "INSERT INTO students (name, age, stip) VALUES ('Кравцов', 20, 2000)";
      mysql_query($query);
?>

Массовая вставка через INSERT

С помощью INSERT можно вставлять не одну запись, а несколько. Синтаксис такой:

<?php
      /*
      ВСТАВИТЬ В имя_таблицы (поле1, поле2...)
      ЗНАЧЕНИЯ (значение1, значение2...), (значение1, значение2...)...
      */
      $query = "INSERT INTO имя_таблицы (поле1, поле2...) VALUES (значение1, значение2...), (значение1, значение2...)...";
      mysql_query($query);
?>

 

Давайте добавим одновременно двух новых студентов: Сидорова, в возрасте 18 лет, со стипендией 1400 руб, Васильева, в возрасте 19 лет, со стипендией 1500 руб:

<?php
      /*
            ВСТАВИТЬ В students (name, age, stip) ЗНАЧЕНИЯ ('Сидоров', 18, 1400), ('Васильев', 19, 1500)
      */
      $query = "INSERT INTO students (name, age, stip) VALUES ('Сидоров', 18, 1400), ('Васильев', 19, 1500)";
      mysql_query($query);
?>
 

Команда DELETE – удаление записей

С помощью команды DELETE можно удалять записи из таблицы. Ее синтаксис очень похож на команду SELECT:

<?php
      //УДАЛИТЬ ИЗ имя_таблицы ГДЕ условие_такое_то
      "DELETE FROM имя_таблицы WHERE 
условие_по_которому_следует_удалять_строки";
?>

Давайте удалим запись с id=6:

<?php
      //УДАЛИТЬ ИЗ students ГДЕ id=6
      $query = "DELETE FROM students WHERE id=6";
      /*
            Обратите внимание на то,
            что после удаления id=6 в таблице не будет вообще.
      */
      mysql_query($query);
?>
 

ORDER BY - сортировка

С помощью команды ORDER BY можно сортировать строки результата.

Выберем из нашей таблицы students всех студентов и отсортируем их по возрасту:

<?php
      //В $result строки будут отсортированы по возрасту от меньшего к большему:
      $query = "SELECT * FROM students ORDER BY age";
      mysql_query($query);
?>

Если мы хотим обратный порядок сортировки, то следует написать:

<?php
      //В $result строки будут отсортированы по возрасту от большего к меньшего:
      $query = "SELECT * FROM students ORDER BY age DESC";
?>

LIMIT – ограничение количества

С помощью команды LIMIT мы можем ограничить количество строк в результате.

В следующем примере ограничим количество строк до двух:

<?php
      //В $result будет только две первых строки:
      $query = "SELECT * FROM students LIMIT 2";
?>

 

С помощью LIMIT можно выбрать несколько строк из середины результата!

В примере ниже мы выберем со второй строки, 5 штук:

<?php
      //В $result будут строки со второй (в запросе с первой), пять штук:
      $query = "SELECT * FROM students LIMIT 1,5";
?>

LIMIT и ORDER вместе:

<?php
      //В $result будут строки со вторую, 5 штук, отсортированные по убыванию id
      $query = "SELECT * FROM students ORDER BY id DESC LIMIT 1,5";
?>