4. Запустите Internet Explorer (Пуск → Все программы → Internet Explorer) или любой другой браузер. В адресной строке браузера введите следующий адрес: http://localhost/test.php. Вы увидите информацию об интерпретаторе PHP (рис. 4.9) и тем самым убедитесь, что PHP-приложения выполняются нормально.
Рис. 4.9. Результат выполнения приложения
Аналогичная последовательность действий будет использоваться для создания всех PHP-приложений в данном разделе. Приступим к разработке приложения, взаимодействующего с базой данных MySQL.
Подготовительные действия
Прежде чем выполнять операции с данными в базе, необходимо сначала подключиться к работающему серверу MySQL. Подключение выполняется с помощью функции
mysql_connect(«<Имя хоста>», «<Имя пользователя>»,»<Пароль>»);
Эта функция возвращает указатель на соединение либо значение FALSE, если соединение установить не удалось.
В качестве примера рассмотрим PHP-приложение, которое выполняет подключение к серверу MySQL и выводит диагностическое сообщение. Создайте в папке htdocs корневой папки XAMPP файл output.php, содержащий следующий код (листинг 4.1).
Листинг 4.1. Подключение к серверу MySQL
<html>
<head>
<title>Работа с MySQL</title>
</head>
<body>
<h1>Подключение к базе данных</h1>
<?php
//Соединяемся с сервером MySQL
$connection = mysql_connect(«localhost»,»username»,»userpassword»);
if(!$connection) die(“Ошибка доступа к базе данных.
Приносим свои извинения”);
print(“Подключение выполнено успешно”);
?>
</body>Для запуска этого приложения наберем в адресной строке браузера адрес http://localhost/output.php. При открытии этой страницы приложение осуществляет подключение к серверу с использованием имени пользователя username и паролем userpassword; возвращаемый функцией указатель на соединение сохраняется в переменной $connection. В случае успешного подключения на веб-странице появится соответствующее сообщение (рис. 4.10).
Если подключиться к серверу не удалось, на веб-странице появится сообщение «Ошибка доступа к базе данных». В этом случае необходимо убедиться, что сервер MySQL запущен (например, с помощью утилиты MySQL Administrator, см. главу 1), а также проверить правильность написания имени пользователя и пароля.
Рис. 4.10. Результат подключения к серверу MySQL...
Совет
В целях защиты от несанкционированного доступа при подключении к базе данных рекомендуется использовать не пользователя root, а специально созданного пользователя с минимально необходимыми правами доступа. О регистрации пользователей и настройке прав далее будет подробно написано.
Следующий шаг – выбор текущей базы данных с помощью функции
mysql_select_db(«<Имя базы данных>»[, <Указатель на соединение>]);
...
Примечание
Для этой функции, а также для всех остальных функций, описанных далее в этом разделе, указатель на соединение является необязательным параметром. Если этот параметр не указан, то подразумевается последнее открытое соединение. Таким образом, если ваше приложение использует только одно соединение с базой данных, то указывать этот параметр нет необходимости.
Функция mysql_select_db() аналогична команде USE <Имя базы данных>, о которой было рассказано в разделе «Создание базы данных» главы 2. Добавьте в сценарий output.php вызов этой функции (листинг 4.2).
Листинг 4.2.
Выбор текущей базы данных
<html>
<head>
<title>Работа с MySQL</title>
</head>
<body>
<h1>Подключение к базе данных</h1>
<?php
//Соединяемся с сервером MySQL
$connection = mysql_connect(«localhost»,»username»,»userpassword»);
if(!$connection) die(“Ошибка доступа к базе данных.
Приносим свои извинения”);
//Выбираем базу данных SalesDept (Отдел продаж)
if(!mysql_select_db(«SalesDept»))
die(“База данных отсутствует. Приносим свои извинения”);
print(“База данных выбрана успешно”);
?>
</body>
После обновления страницы http://localhost/output.php вы увидите либо сообщение «Операция выполнена успешно», либо сообщение «База данных отсутствует. Приносим свои извинения». В последнем случае необходимо проверить, существует ли база данных с таким именем на сервере MySQL и есть ли у пользователя username право доступа к этой базе.
После подключения к серверу MySQL и выбора текущей базы данных можно приступать к работе с данными. В первую очередь необходимо установить кодировку, чтобы избежать проблем с отображением символов русского алфавита. Как мы знаем из главы 2, указать серверу кодировку, которую использует клиентское приложение, можно с помощью команды SET NAMES <Кодировка>;.
Файл output.php мы сохранили в кодировке Windows (CP-1251), поэтому именно ее и нужно установить.
Для отправки SQL-команды на сервер MySQL используется функция
mysql_query(«<Текст команды>»[, <Указатель на соединение>]);
Добавьте в сценарий output.php вызов этой функции (листинг 4.3). Листинг 4.3. Установка кодировки
<html>
<head>
<title>Работа с MySQL</title>
</head>
<body>
<h1>Подключение к базе данных</h1>
<?php
//Соединяемся с сервером MySQL
$connection = mysql_connect(«localhost»,»username»,»userpassword»);
if(!$connection) die(“Ошибка доступа к базе данных.
Приносим свои извинения”);
//Выбираем базу данных SalesDept (Отдел продаж)
if(!mysql_select_db(«SalesDept»))
die(“База данных отсутствует. Приносим свои извинения”);
//Устанавливаем кодировку CP-1251
mysql_query(“SET NAMES cp1251”);
print(“Операция выполнена успешно”);
?>
</body>В следующем подразделе вы узнаете о том, как получить необходимую информацию из базы данных.
Выполнение запроса к базе данных
В данном подразделе описывается, как создать PHP-сценарий, формирующий динамическую веб-страницу на основе данных, полученных из базы.
Как было упомянуто выше, для выполнения SQL-команды PHP-приложением предназначена функция
mysql_query(«<Текст команды>»[, <Указатель на соединение>])
Если SQL-команда предполагает получение информации из базы данных, то функция mysql_query() возвращает указатель на полученный массив данных (либо значение FALSE, если при выполнении запроса произошла ошибка). После того как запрос выполнен, извлечь из полученного массива конкретные значения можно с помощью функции
mysql_fetch_assoc(<Указатель на результат запроса>)
или
mysql_fetch_array(<Указатель результат запроса>)
Функция mysql_fetch_assoc() получает очередную строку из результата запроса и возвращает ее в виде ассоциативного массива. Иными словами, вы получаете возможность работать со значениями в строке, используя для доступа к ним названия столбцов.
Проиллюстрируем работу этой функции на примере вывода списка товаров, то есть данных из таблицы Products (Товары). Добавим в сценарий output.php вызов функций mysql_query() и mysql_fetch_assoc() (листинг 4.4).
Листинг 4.4. Получение информации и отображение ее на странице
<html>
<head>
<title>Работа с MySQL</title>
</head>
<body>
<h1>Список товаров</h1>
<!– Выводим список товаров –>
<table>
<!– Выводим заголовок списка товаров –>
<tr>
<th>Наименование</th>
<th>Описание</th>
<th>Цена</th>
</tr>
<?php
//Соединяемся с сервером MySQL
$connection = mysql_connect(«localhost»,»username»,»userpassword»);
if(!$connection) die(“Ошибка доступа к базе данных.
Приносим свои извинения”);
//Выбираем базу данных SalesDept (Отдел продаж)
if(!mysql_select_db(«SalesDept»))
die(“База данных отсутствует. Приносим свои извинения”);
//Устанавливаем кодировку CP-1251
mysql_query(“SET NAMES cp1251”);
//Получаем список товаров
$qresult = mysql_query(«SELECT * FROM Products»);
if(!$qresult) die(“Ошибка доступа к базе данных.
Приносим свои извинения”);
//Очередную строку из результата запроса (информацию о товаре)