Чтобы получить доступ к базе данных из Web, используя PHP, надо сделать следующие основные шаги:
Подключение к серверу MySQL.
Выбор базы данных.
Выполнение запроса к базе данных:
добавление;
удаление;
изменение;
поиск;
сортировка.
Получение результата запроса.
Отсоединение от базы данных.
Для подключения к серверу базы данных в PHP есть функция mysql_connect( ). Ее аргументы: имя компьютера, имя пользователя и пароль. Эти аргументы можно опустить. По умолчанию имя компьютера = localhost, тогда имя пользователя и пароль не требуется. Если PHP используется в сочетании с сервером Apache, то можно воспользоваться функцией mysql_pconnect(). В этом случае соединение с сервером не исчезает после завершения работы программы или вызова функции mysql_close(). Функции mysql_connect() и mysql_pconnect() возвращают идентификатор подключения, если все прошло успешно. Например:
$link = mysql_pconnect ();if ( !$link ) die ("Невозможно подключение к MySQL");
После того, как соединение с сервером MySQL установлено, нужно выбрать базу данных. Для этого используется функция mysql_select_db(). Ее аргумент: имя базы данных. Функция возвращает true, если указанная база данных существует и доступ к ней возможен. Например:
$db = "sample";mysql_select_db ( $db ) or die ("Невозможно открыть $db");
Для добавления, удаления, изменения и выбора данных нужно сконструировать и выполнить запрос SQL. Для этого в языке PHP существует функция mysql_query(). Ее аргумент: строка с запросом. Функция возвращает идентификатор запроса.
Пример 1
<html> <head> <title>Добавление записи в таблицу</title> </head> <body> <?php $db = "sample"; $link = mysql_pconnect (); if ( !$link ) die ("Невозможно подключение к MySQL"); mysql_select_db ( $db ) or die ("Невозможно открыть $db"); $query = "INSERT INTO books VALUES ('966-7393-80-1', 'Аллен Вайк', 'PHP. Справочник', '213', '4')"; mysql_query ( $query ); mysql_close ( $link ); ?> </body> </html>
При каждом выполнении примера 1 в таблицу будет добавляться новая запись, содержащая одни и те же данные. Разумеется, имеет смысл добавлять в базу данные, введенные пользователем.
В примере 2.1 приведена HTML-форма для добавления новых книг в базу данных.
Результаты заполнения этой формы передаются в insert_book.php.
Пример 2.2
<html><head><title>Программа добавления новых книг (файл insert_book.php)</title></head><body><?phpif (!$isbn || !$author || !$title || !$price || !$quantity) die ("Не все данные введены.<br> Пожалуйста, вернитесь назад и закончите ввод");$isbn = trim ( $isbn ); $author = trim ( $author ); $title = trim ( $title ) ; $isbn = addslashes ( $isbn ); $author = addslashes ( $author ); $title = addslashes ( $title ) ; $db = "sample";$link = mysql_pconnect();if ( !$link ) die ("Невозможно подключение к MySQL");mysql_select_db ( $db ) or die ("Невозможно открыть $db");$query = "INSERT INTO books VALUES ('" .$isbn."', '".$author."', '".$title."', '" .$price."', '".$quantity."')";$result = mysql_query ( $query );if ($result) echo "Книга добавлена в базу данных.";mysql_close ( $link );?></body></html>
В примере 2.2 введенные строковые данные обработаны функцией addslashes(). Эта функция добавляет обратные слеши перед одинарными кавычками ('), двойными кавычками ("), обратным слешем (\) и null-байтом. Дело в том, что по требованиям синтаксиса запросов баз данных такие символы должны заключаться в кавычки.
Для определения количества записей в результате запроса используется функция mysql_num_rows().
Все записи результата запроса можно просмотреть в цикле. Перед этим с помощью функции mysql_fetch_array() для каждой записи получают ассоциативный массив.
В примере 3.1 приведена HTML-форма для поиска определенных книг в базе данных.
Результаты заполнения этой формы передаются в search_book.php.
Пример 3.2
<html><head><title>Программа поиска книг (файл search_book.php)</title></head><body><?phptrim ( $searchterm );if (!$searchterm) die ("Не все данные введены.<br> Пожалуйста, вернитесь назад и закончите ввод");$searchterm = addslashes ($searchterm);$link = mysql_pconnect ();if ( !$link ) die ("Невозможно подключение к MySQL");$db = "sample";mysql_select_db ( $db ) or die ("Невозможно открыть $db");$query = "SELECT * FROM books WHERE " .$searchtype." like '%".$searchterm."%'";$result = mysql_query ( $query );$n = mysql_num_rows ( $result );for ( $i=0; $i<$n; $i++ ) { $row = mysql_fetch_array($result); echo "<p><b>".($i+1).". $row[title]</b><br>"; echo "Автор: $row[author]<br>"; echo "ISBN: $row[ISBN]<br>"; echo "Цена: $row[price]<br>"; echo "Количество: $row[quantity]</p>"; }if ( $n == 0 ) echo "Ничего не можем предложить. Извините";mysql_close ( $link );?></body></html>
Итак, как работает архитектура Web-баз данных:
1. Web-браузер пользователя выдает HTTP-запрос определенной Web-страницы. Например, пользователь, используя HTML-форму, ищет все книги о PHP. Страница обработки формы называется search_book.php.
2. Web-сервер принимает запрос на search_book.php, извлекает этот файл и передает на обработку механизму PHP.
3. PHP выполняет соединение с MySQL-сервером и отправляет запрос.
4. Сервер принимает запрос к базе данных, обрабатывает его и отправляет результат (список книг) обратно механизму PHP.
5. Механизм PHP завершает выполнение сценария, форматирует результат запроса в HTML. После этого результат в виде HTML возвращается Web-серверу.
6. Web-сервер пересылает HTML в браузер, и пользователь имеет возможность просмотреть запрошенный список книг.
mysql_connect - Открывает соединение с сервером MySQL