Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник PHP.docx
Скачиваний:
8
Добавлен:
16.08.2019
Размер:
1.01 Mб
Скачать

Пример 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-оператор и отсортировать записи по имени, фамилии или номеру телефона.