PHP обеспечивает хорошую поддержку многих баз данных. Если "родной" поддержки для вашей любимой базы данных не существует, то всегда можно воспользоваться ODBC-драйвером, который поддерживает исходные драйверы баз данных. Регулярно дополняется поддержка новых баз данных, и разработчики PHP говорят: "Дайте нам машину, которую можно протестировать, и мы дадим вам ее поддержку".
СУБД MySQL является самой популярной базой данных, которая используется кодировщиками PHP. Кроме того, что она является бесплатной, она подходит Web-разработчикам по параметрам скорости. В примерах, приведенных в этой главе, предполагается, что в вашем распоряжении имеется СУБД MySQL. В противном случае обратитесь к Web-узлу MySQL <http://www.mysql.com/>, чтобы загрузить и установить ее, или выполните все приведенные в этой главе примеры с помощью другой базы данных.
Большинство реляционных баз данных использует язык SQL (Structured Query Language - язык структурированных запросов). Это язык четвертого поколения (4GL), и он больше похож на английский язык, чем на исходный PHP-код. Подробное рассмотрение языка SQL выходит за рамки данной книги. Если вы совсем не знакомы с языком SQL, обратитесь к книге автора MySQL. Библиотека профессионала, опубликованной в Издательском доме "Вильямс".
23.1. Создание HTML-таблиц из SQL-запросов
Вероятно, простейшая операция, которую можно выполнить с помощью базы данных и PHP, - это выборка данных из таблицы и отображение их в HTML-таблице. Таблица может содержать каталог продаваемых товаров, список проектов или список серверов имен Internet и времени их "пингования". Для иллюстрации воспользуемся первым сценарием. Предположим, что супермаркету потребовалось представить на Web-узле товары, выставленные им на продажу. Для подтверждения этой концепции необходимо создать страницу, на которой перечислены товары из базы данных. Для этого воспользуемся базой данных test, которая была создана во время инсталляции СУБД MySQL. PHP-сценарий, предназначенный для вывода каталога товаров, будет располагаться на той же машине, что и сервер базы данных. Первым шагом является создание базы данных. В листинге 23.1 показан SQL-код, предназначенный для создания простейшей таблицы, состоящей из трех столбцов. Эта таблица называется catalog и имеет целочисленный столбец ID длиной не более 11 цифр. Он не может быть пустым - новым строкам будут автоматически присвоены последовательные значения идентификатора. Последняя строка определения задает столбец ID в качестве первичного ключа, что позволяет создать индекс на основании этого столбца и запрещает дублирование идентификаторов ID. Два остальных столбца называются Name и Price. 

Листинг 23.1. Создание таблицы catalog

CREATE TABLE catalog (
ID INT(11) NOT NULL AUTO_INCREMENT, Name CHAR(32), Price DECIMAL(6,2), PRIMARY KEY (ID)

Столбец Name является символической строкой, которая может содержать до 32 символов. Столбец Price представляет собой шестизначное число с двумя цифрами после запятой, что является достаточным для задания денежных величин. Далее нам понадобится внести значения в таблицу. Поскольку создается демонстрационный пример, заносятся товары и их предположительные цены. Для этого прибегнем к помощи оператора INSERT (листинг 23.2).

Листинг 23.2. Добавление данных в таблицу catalog

INSERT INTO catalog (Name, Price) VALUES ('Toothbrush', 1.79), ('Comb', 0.95), ('Toothpaste', 5.39), ('Dental Floss', 3.50), ('Shampoo', 2.50), ('Conditioner', 3.15), ('Deodorant', 1.50), ('Hair Gel', 6.25), ('Razor Blades', 2.99), ('Brush', 1.15);

 Операторы SQL, как и операторы PHP, завершаются точкой с запятой. С помощью такого оператора мы сообщаем MySQL-серверу о том, что собираемся вставить несколько строк в таблицу catalog, при этом мы предоставляем только наименование товара и его цену. MySQL сам создает новое значение столбца ID. Это происходит из-за того, что столбец определен с типом AUTO_INCREMENT. Ключевое слово VALUES дает знать серверу о том, что мы можем послать сами значения столбцов. Заметим, что использование одинарных кавычек для выделения текста является стандартом языка SQL. MySQL позволяет вставить сразу несколько строк в один оператор, которые разделяются запятыми. Большинство серверов баз данных требует для ввода каждой отдельной строки указать отдельный оператор.
Для того чтобы убедиться в том, что все прошло успешно, достаточно посмотреть на рис. 32.1, где показан вывод команды отображения содержимого таблицы catalog. Этого можно добиться с помощью команды SELECT * FROM catalog; в своем клиенте MySQL.
Интеграция баз данных