- •Урок 7: Комментарии в скриптах
- •Почему комментарии так важны для ваших скриптов?
- •Как вставлять комментарии?
- •Урок 19: Вставка данных в бд
- •Вставка данных с использованием sql
- •Пример: Вставка новой персоны в таблицу
- •Сохранение пользовательского ввода в бд
- •Наиболее распространённые ошибки начинающих
- •Неверный тип данных
- •Урок 20: Получение данных из бд
- •Пример 1: Запрос данных из бд
- •Пример 2: Сортировка данных по алфавиту, хронологически или численно
- •Получение выбранных данных
- •Пример 3: Адресная книга
- •Код файла list.Php
- •Код файла person.Php
- •Урок 22: Обновление данных в бд
- •Обновление данных с помощью sql
- •Пример: Обновление ячеек в таблице "people"
Пример 1: Запрос данных из бд
Этот пример использует БД и таблицу из Урока 19 и Урока 18. Следовательно, прочтите сначала эти уроки.
Данный пример показывает, как данные из таблицы "people" запрашиваются с помощью SQL-запроса.
Этот SQL-запрос возвращает результат в виде серии записей/records. Эти записи хранятся в так называемом наборе Записей/recordset. Набор записей можно охарактеризовать как род таблицы в памяти сервера, содержащей данные (записи), и каждая запись подразделяется на отдельные поля (или столбцы).
Набор данных можно сравнить с таблицей, где каждая запись аналогична ряду таблицы. В PHP мы может пройти по набору записей с помощью циклов и функции mysql_fetch_array, которая возвратит каждый ряд в виде массива.
Следующий код показывает, как использовать mysql_fetch_array для прохода по набору записей:
<html>
<head>
<title>Запрос данных из таблицы</title>
</head>
<body>
<?php
// Соединиться с сервером БД
mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
// Выбрать БД
mysql_select_db("mydatabase") or die(mysql_error());
// SQL-запрос
$strSQL = "SELECT * FROM people";
// Выполнить запрос (набор данных $rs содержит результат)
$rs = mysql_query($strSQL);
// Цикл по recordset $rs
// Каждый ряд становится массивом ($row) с помощью функции mysql_fetch_array
while($row = mysql_fetch_array($rs)) {
// Записать значение столбца FirstName (который является теперь массивом $row)
echo $row['FirstName'] . "<br />";
}
// Закрыть соединение с БД
mysql_close();
?>
</body>
</html>
Отображение примера
Обратите внимание, как для каждой записи мы получаем содержимое столбца "FirstName", печатая $row['FirstName']. Аналогично мы можем получить содержимое столбца "Phone", печатая $row['Phone'], к примеру.
Порядок набора записей точно такой же, как в таблице в БД. Но в следующем уроке мы посмотрим, как сортировать набор записей.
Пример 2: Сортировка данных по алфавиту, хронологически или численно
Часто бывает удобно, когда список или таблица представлены в алфавитном порядке, хронологически или численно. Такая сортировка легко выполняется в SQL, и синтаксис Order By ColumnName используется для сортировки содержимого столбцов.
Возьмём SQL-оператор из предыдущего примера:
strSQL = "SELECT * FROM people"
Запись может, например, быть отсортирована в алфавитном порядке по первому имени людей:
strSQL = "SELECT * FROM people ORDER BY FirstName"
Либо хронологически по дате рождения:
strSQL = "SELECT * FROM people ORDER BY BirthDate"
Сортировка может выполняться по восходящей/ascending или по нисходящей/descending, добавлением DESC:
strSQL = "SELECT * FROM people ORDER BY BirthDate DESC"
В следующем примере люди сортируются по возрасту:
<html>
<head>
<title>Запросить данные из БД</title>
</head>
<body>
<?php
// Соединиться с сервером БД
mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());
// Выбрать БД
mysql_select_db("mydatabase") or die(mysql_error());
// SQL-запрос
$strSQL = "SELECT * FROM people ORDER BY BirthDate DESC";
// Выполнить запрос (набор записей $rs содержит результат)
$rs = mysql_query($strSQL);
// Цикл по набору записей $rs
while($row = mysql_fetch_array($rs)) {
// Записать значение столбцов FirstName и BirthDate
echo $row['FirstName'] . " " . $row['BirthDate'] . "<br />";
}
// Закрыть соединение с БД
mysql_close();
?>
</body>
</html>
Отображение примера
Попробуйте самостоятельно изменить этот SQL-оператор и отсортировать записи по имени, фамилии или номеру телефона.