
4 Извлечение данных
Данные из базы можно прочитать с помощью простого запроса:
$Query="SELECT * from $TableName";
Символ звездочка "*", используемый в данной строке, эквивалентен понятию "всё", то есть требуется выбрать всё из столбца "$TableName". Этой короткой инструкции часто вполне достаточно для извлечения данных.
Однако запрос можно ограничить, указав только часть полей, например:
SELECT FirstName, Comments from $TableName;
Этот запрос дает задание извлечь информацию только из этих двух столбцов — имени и комментариев.
Другой способ ограничить запрос — написать следующую инструкцию:
SELECT * from $TableName where (FirstName= 'Сергей').
Здесь запрашиваем информацию из всех столбцов, но только из тех строк, где в столбце с указанием имени имеется значение Сергей.
Основное отличие извлечения данных от записи их в базу состоит в том, что запрос необходимо обрабатывать по-другому. Целесообразно присваивать результаты запроса переменной:
$Result=mysql_query($Query);
Как сказал бы непрофессионал, этой переменной теперь известен результат запроса. Для извлечения информации необходимо поместить переменную "$Result" в цикл, последовательно пройдя по всем строкам полученного результата запроса.
while($Row=mysql_fetch_array($Result)) {
…………….
}
Каждая итерация цикла будет превращать следующую строку информации из запроса (сохраненную в переменной "$Result") в массив с названием "$Row".
Этот процесс будет продолжаться, пока не останется больше строк с информацией. Лучший способ понять данную систему — написать сценарий, который считывает информацию из таблицы "Feedback". Предварительно необходимо заполнить таблицу данными с помощью формы "form.html".
Извлечение данных из таблицы
1. Создайте новый PHP-документ в текстовом редакторе следующего содержания.
<HTML>
<HEAD>
<TITLE>Извлечение данных из БД</TITLE></HEAD>
<BODY>
<?php
// Установка значения переменных для доступа к базе данных.
$Host = "localhost";
$User = "root";
$Password = "";
$DBName = "db1";
$TableName = "Feedback";
$Link = mysql_connect ($Host, $User, $Password);
mysql_select_db($DBName);
$Query = "SELECT * from $TableName";
$Result = mysql_query ($Query);
// Создание таблицы.
print ("<TABLE BORDER=1 WIDTH=\"75%\" CELLSPACING=2 CELLPADDING=2 ALIGN=CENTER>\n");
print ("<TR ALIGN=CENTER VALIGN=TOP>\n");
print ("<TD ALIGN=CENTER VALIGN=TOP>Имя</TD>\n");
print ("<TD ALIGN=CENTER VALIGN=TOP>Адрес электронной почты</TD>\n");
print ("<TD ALIGN=CENTER VALIGN=TOP>Комментарии</TD>\n");
print ("</TR>\n");
// Получение результатов из базы данных.
while ($Row = mysql_fetch_array ($Result)) {
print ("<TR ALIGN=CENTER VALIGN=TOP>\n");
print ("<TD ALIGN=CENTER
VALIGN=TOP>$Row[FirstName]$Row[LastName]
</TD>\n");
print ("<TD ALIGN=CENTER
ALIGN=TOP>$Row[EmailAddress]</TD>\n");
print ("<TD ALIGN=CENTER
VALIGN=TOP>$Row[Comments]</TD>\n");
print ("</TR>\n");
}
mysql_close ($Link);
print ("</TABLE>\n");
?>
</BODY>
</HTML>
Строки с № 1 по № 4 создают стандартный HTML-заголовок.
Строки с № 5 по № 11 открывают PHP-раздел страницы и задают переменные для доступа в базу данных.
Строки с № 12 по № 15 создают соединение с сервером базы данных, открывают базу данных, определяют и выполняют запрос.
Этот запрос прост и полезен. Как было упомянуто выше, его результаты будут сохранены в переменной, которую позже поместим в цикл.
Строки с № 16 по № 22 создают HTML-таблицу для выведения на экран результатов запроса.
Так как извлекаем информацию из таблицы и выводим ее на экран в виде кода HTML, то целесообразно их так же представить в виде HTML-таблицы. Тогда страница будет выглядеть наглядно и аккуратно.
Строка № 24 создаёт цикл, извлекающий строки из базы данных, пока они не кончатся.
Цикл помещает в переменную "$Row" массив, состоящий из первой строки таблицы в переменной "$Result". Затем исполняются соответствующие команды. При обращении к строке "mysql_fetch_array ($Result)" на очередном проходе цикла переменная "$Row" получает следующую строку. Цикл функционирует, пока не останется строк с информацией.
Строки с № 25 по № 34 выводят на экран информацию из базы данных в виде HTML-таблицы.
Так как была использована функция "mysql_fetch_array()", то можно обращаться к каждому отдельному столбцу в извлеченной из базы данных строке точно так же, как к массиву. Ключи массива — названия столбцов таблицы — являются именем, фамилией, адресом электронной почты и комментариями. Названия полей даются на английском языке и с обязательным соблюдением регистра букв.
Строки с № 33 по № 34 закрывают строку HTML-таблицы и цикл "while".
Еще раз подчеркнем, что этот цикл получает строку данных из таблицы БД, присваивает ее массиву "$Row", затем печатает строку HTML-таблицы.
Строки с № 35 по № 39 отключают от сервера MySQL, закрывают HTML-таблицу, РНР-раздел и саму HTML-страницу.
2. Сохраните сценарий под именем "DisplayDB.php", загрузите его на сервер и протестируйте в браузере.
Как видно из приведённого листинга, SQL-запрос на извлечение всех данных из таблицы очень прост, но чтобы получить все данные, необходимо создать цикл.
С помощью РНР можно извлекать данные из БД и создавать динамические Web-страницы, что невозможно сделать только средствами HTML.