Последним шагом является написание PHP-сценария, который получал бы содержимое таблицы и оформлял ее в виде HTML-таблицы. В листинге 23.3 предоставлен PHP-код, предназначенный для выборки значений имени и цены с последующим отображением их в HTML-таблице. Результат работы этого сценария показан на рис. 23.2.
Для того чтобы начать работу с базой данных, необходимо подключиться к ней, например с помощью функции mysql_connect. В качестве параметров она принимает имя узла, имя пользователя и пароль. Обычно я создаю в своих базах данных MySQL пользователя с именем httpd без какого-либо пароля. Кроме того, этот пользователь может подключиться с локального сервера. Он назван так же, как и пользователь Unix, который выполняет сценарии, - другими словами, Web-сервер. Но вы можете создавать и своих собственных пользователей и соответствующую им базу данных. Конечно, в таком случае придется внести изменения в аргументы функции.

Листинг 23.3. Создание HTML-таблицы из запроса

<?php
//подключиться к серверу и проверить на ошибку if(!($dbLink = mysql_connect("localhost", "httpd", ""))) {
print("HeB03Mo;KHO подключиться к базе данных <br>n");
print("Завершение работы!<br>n");
exit();
}
// выбрать базу данных и проверить на ошибку if(!($dbResult = mysql_query("USE test", $dbLink)))

 { 
print("Heвoзмoжнo использовать тестовую базу данных!<br>n");
print("Завершение работы!<br>n");
exit();
}
// получить все содержимое таблицы catalog $Query = "SELECT Name, Price " .
"FROM catalog " .
"ORDER BY Name ";
if(!($dbResult = mysql_query($Query, $dbLink)))
{
print("Heвoзмoжнo выполнить запрос!<br>n"); print("MySQL сообщает: " . mysql_error() . "<br>n"); print("Этo был запрос: $Query<br>n"); exit();
}
//start table
print("<table border="0">n"); //создать заглавную строку print("<tr>n");
print("<td bgcolor="#cccccc"><b>Тoвар</b></td>n"),•
print("<td bgcolor="#cccccc"><b>Цeна</b></td>n"),•
print("</tr>n");
// получить все строки
while($dbRow = mysql_fetch_assoc($dbResult))
{
print("<tr>n");
print("<td>{$dbRow['Name']}</td>n");
print("<td align="right">{$dbRow['Price']}</td>n"),-print("</tr>n");
}
// завершить таблицу print("</table>n");
?>
Интеграция баз данных
Если соединение прошло успешно, возвращается идентификатор ссылки MySQL. Следует заметить, что проверка и выполнение соединения осуществляется в одной строке. Для подключения к базе данных используется функция mysql_connect. Просмотрев описание функций MySQL в главе 17, "Базы данных", можно заметить и другую функцию - mysql_pconnect. Эти две функции работают идентично, за исключением того, что функция mysql_pconnect возвращает устойчивые соединения.
Большинство функций баз данных, которые имеются в арсенале PHP, используют идею устойчивого соединения, т.е. такого, которое не закрывается и после выполнения сценария. Если аналогичный Web-процесс запускает другой сценарий, работающий с тем же сервером базы данных, предыдущее соединение будет использоваться повторно, предотвращая перегрузку. На практике эта экономия не настолько существенна из-за того, что сервер Apache 1.3.x и более ранние его версии используют вместо потоков процессы. Процессы обслуживают определенные запросы, после чего замещаются другими процессами. Когда процесс завершается, закрывается его устойчивое соединение.
Следующим шагом является выбор базы данных. Здесь была выбрана база данных test. После того как PHP становится известно, с какой базой данных он будет работать, получаем все строки из таблицы catalog. Это сделано с помощью функции mysql_query, которая выполняет заданный запрос на заданном соединении и возвращает результирующий идентификатор. Этот результирующий идентификатор мы будем использовать в дальнейшем для выборки результатов запроса.