MySQL
Система управления базами данных (СУБД) MySQL. Установка, настройка и запуск MySQL. Окончательная настройка нового MySQL сервера. Основные утилиты и журнальные файлы. Работа с виртуальными хостами. Синтаксис для создания таблиц и управление данными.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 24.06.2019 |
Размер файла | 3,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на Allbest.ru
Содержание
Введение
1. Знакомство с системой MySQL
1.1 Особенности MySQL
1.2 Установка, настройка и запуск MySQL
1.3 Программное обеспечение
1.4 Основные утилиты MySQL
1.5 Работа с виртуальными хостами
1.6 Работа с сервером MySQL
1.7 Работа с таблицами в БД
1.8 Управление данными
1.9 Системы безопасности MySQL
2. Разработка PHP страницы для Интернет-магазина
Литература
Введение
база данные субд mysql
В последнее время большее внимание уделяется, продвижению своей продукции или товара не на ограниченном участке территории, а как можно больше обхватить ее по всей стране и при удобном случае с выходом на внешний рынок.
В связи с этим, довольно сильно прогрессирует Интернет бизнес.
Для необоснованных затрат на транспортировку товара, в те районы, где он может быть не востребован, служит Интернет магазин (сайт, где клиент может произвести заказ, а так же, если продавец использует Интернет деньги, что сейчас получило большое распространение, и сразу оплатить его).
В связи с этим, для решения поставленной выше задачи, в данной работе опишу пример создания базы данных для Интернет магазина, занимающегося реализацией компьютерной техникой.
Но, вначале давайте познакомимся с продуктом MySQL.
1. Знакомство с системой MySQL
1.1 Особенности MySQL
Система управления базами данных (СУБД) MySQL - разработка шведской компании MySQL AB. СУБД MySQL является программным обеспечением с открытым исходным кодом, распространяемым по лицензии GNU (GPL) и коммерческой лицензии для ситуаций, не подпадающих под действие лицензии GPL. MySQL поддерживает реляционную модель данных, т. е. представляет собой реляционную СУБД. [5]
Рис. 1. Логотип MySQL
Начиная с версии 5. 0, СУБД MySQL практически полностью удовлетворяет стандарту структурированного языка запросов SQL и, следовательно, совместима с другими базами данных. Исчерпывающую информацию о диалекте MySQL SQL можно получить в [1, 2]
Рассмотрим основные достоинства СУБД MySQL:
Высокое качество - MySQL характеризуется устойчивой работой.
Наряду с Oracle, MySQL считается одной из самых быстрых СУБД в мире.
Открытый код доступен для просмотра и модернизации, что позволяет постоянно улучшать программный продукт.
СУБД MySQL, разработанная с использованием языков C/C++, протестирована на многих платформах, среди которых Windows, Linux, FreeBSD, Mac OS X, OS/2, Solaris и др.
MySQL поддерживает API (Application Programming Interface, программный интерфейс приложения) для С, C++, Eiffel, Java, Perl, PHP, Python, Ruby и Tcl. MySQL можно успешно применять как для построения Web-страниц с использованием Perl, PHP и Java, так и для работы прикладной программы, созданной с использованием Delphi, Builder C++ или платформы. NET.
СУБД MySQL предоставляет широкий выбор типов таблиц, в том числе и сторонних разработчиков, что позволяет реализовать оптимальную для решаемой задачи производительность и функциональность.
Локализация в MySQL выполнена корректно. У пользователя, как правило, не возникает проблем при обработке русского содержимого БД
На официальном сайте MySQL http: //www. mysql. com можно найти доступные для скачивания версии этого продукта. [5]
Еще в версии MySQL 4. 1 появились такие важные нововведения, как полная поддержка вложенных запросов и поддержка транзакций. А в версии MySQL 5. 0 стали доступными следующие важные механизмы:
хранимые процедуры и функции, объединяющие в себе целые последовательности запросов;
триггеры, т. е. хранимые процедуры, привязанные к событию изменения таблицы;
представления - выборки данных, которые можно представить как полноценные реально существующие таблицы базы данных;
курсоры, позволяющие цикле просмотреть каждую строку результирующей таблицы запросов;
информационная схема, т. е. переносимый набор представлений системной таблицы, в которой хранится разнообразная внутренняя информация.
обработчики ошибок;
множество новых функций. [5]
1.2 Установка, настройка и запуск MySQL
MySQL Downloads - выбираем версию которая нас интересует. Текущая версия MySQL 5. 1 Release Candidate, все еще релиз, и самый последний дистрибутив, который можно скачать MySQL 5. 1. 26. Для работы в Windows пользуюсь MySQL без инсталляции - Without installer (unzip in C: \), в архиве это весит 98. 3 Мб.
Качаем напрямую Download или выбираем зеркало Pick a mirror, где вежливо отказываемся «« No thanks, just take me to the downloads!» и получаем прямую ссылку. [4]
Рис. 2. Сайт для скачивания MySQL
Установка MySQL.
MySQL, Apache, PHP, Python, и др. софт находиться на диске D: \: d: /usr/ apache2/ php/ mysql/ - текущая версия сервера
Это позволяет не переустанавливать каждый раз все заново при новой инсталляции Windows. Очень удобно и переносимо.
Создаем папку d: /usr/mysql_5. 1. 26-rc/ и распаковываем туда наш архив mysql-noinstall-5. 1. 26-rc-win32. zip.
Настройка MySQL.
Можно скопировать файл конфигурации my. ini с предыдущей версии, только если это версия 5. 1, более старые конфигурации могут отличаться. Или настраиваем новый файл. Делаем все с нуля.
Есть четыре файла настройки MySQL: my-huge. ini, my-large. ini, my-medium. ini, my-small. ini. Отличаются они разными опциями и зависят от целей, ресурсов сервера. Берем my-medium. ini и переименовываем в my. ini - это наш файл конфигурации. [4]
Добавляем следующие полезные опции в секцию [mysqld].
[mysqld]
# меняем временно порт с 3306 на 3307
port = 3307
# добавляем поддержку кодировки UTF-8 по умолчанию, это решает много проблем
default-character-set=utf8
default-collation=utf8_unicode_ci
Рис. 3 Добавление опций в секцию [mysqld]
Запуск MySQL.
Запускать MySQL в Windows будем как службу. Для это её надо добавить в сервисы. Можно запускать сервис вручную, или включить автозагрузку в «Сервисах». [5]
Рис. 4 Запуск MySQL
Добавление службы
Создаем следующие bat-файлы, все команды можно запускать в консоли, но так удобнее.
install_service. bat - инсталляция сервиса
«d: \usr\mysql_5. 1. 26-rc\bin\mysqld» --install-manual
MySQL5_1_26-rc --defaults-file=«d: \usr\mysql_5. 1. 26-rc\my. ini»
Рис. 5 Инсталляция сервера |
MySQL5_1_26-rc - название нашей службы, оно обязательно должно быть уникальным. Если зайти в «Службы»: Настройка - Панель Управления - Администрирование Службы, то можно увидеть новый сервис: MySQL5_1_26-rc и в её настройках параметр запуска
d: \usr\mysql_5. 1. 26-rc\bin\mysqld --defaults-file=d: \usr\mysql_5. 1. 26-rc\my. ini MySQL5_1_26-rc |
Рис. 6 Сервис MySQL5_1_26-rc
remove_service. bat - удаления сервиса из списка служб
12 |
NET STOP MySQL5_1_26-rc«d: \usr\mysql_5. 1. 26-rc\bin\mysqld» --remove MySQL5_1_26-rc |
service_start_mysql. bat - запуск сервиса
1 |
NET START MySQL5_1_26-rc |
service_stop_mysql. bat - остановка сервиса
1 |
NET STOP MySQL5_1_26-rc |
Подключение к БД.
После инсталляции сервиса и его запуска, нужно проверить работоспособность MySQL сервера.
Настройки подключения по умолчанию:
хост: localhost
имя пользователя: root
пароль:
порт: 3306
Можно воспользоваться каким-нибудь клиентом, например: SQLyog. Или с помощью консольной утилиты mysql:
1234567891011121314 |
# очень важно использовать полный путь к новому серверу и порт 3307D: > d: \usr\mysql_5. 1. 26-rc\bin\mysql -h localhost -P 3307 -u root# отобразить список БДmysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || test |+--------------------+3 rows in set (0. 00 sec) |
Экспорт базы данных.
Для экспорта БД лучше воспользоваться стандартным программой MySQL mysqldump. Все родные утилиты более производительнее, чем другие. [4]
1 |
«d: \usr\mysql\bin\mysqldump. exe « -hlocalhost -uroot -proot--add-drop-table --all-databases > mysql_all_db. sql |
На выходе получаем файл - mysql_all_db. sql.
Можно добавить опцию -add-drop-database - но тогда будут удалены все БД при импорте. Когда это нужно? Например, если нужно импортировать БД со всеми пользователями, их привилегиями, правами.
Импорт БД.
Для импорта воспользуемся консольной утилитой mysql.
1234567 |
# без пароляd: \usr\mysql_5. 1. 26-rc\bin\mysql -h localhost -P 3307 -u root< mysql_all_db. sql# с указанием пароляd: \usr\mysql_5. 1. 26-rc\bin\mysql -h localhost -P 3307 -u root -proot< mysql_all_db. sql# или с паролем, но с вводом его вручнуюd: \usr\mysql_5. 1. 26-rc\bin\mysql -h localhost -P 3307 -u root -p< mysql_all_db. sql |
Окончательная настройка нового MySQL сервера.
Поменять порт в новом сервере на 3306
Если старый сервер не нужен, то как минимум надо его службу остановить, отключить из автозапуска сервисов.
Если вдруг понадобятся данные из старого сервера, рекомендую создать bat-файлы для него, и настроить его на другой порт, тогда не будет конфликтов с текущим.
Чтобы консольные утилиты сервера MySQL работали без указания полного пути можно добавить в «Переменные среды» путь к серверу: [5]
1234 |
Path: d: \usr\mysql; d: \usr\mysql\bin;# илиPath: d: \usr\mysql_5. 1. 26-rc; d: \usr\mysql_5. 1. 26-rc\bin; |
1.3 Программное обеспечение
Комплект Денвер-2 имеет нечто вроде ядра - так называемый «базовый комплект», занимающий всего около 2 MB. Базовый комплект содержит большинство необходимых для разработки web-страниц программ и утилит:
сервер Apache;
язык PHP с поддержкой GD и MySQL;
MySQL с поддержкой транзакций.
Система управления виртуальными хостами, основанная на шаблонах (чтобы создать новый хост, нужно лишь добавить директорию в каталог /home, при этом править конфигурационные файлы не требуется) ;
Система управления запуском и завершением работы сервера.
phpMyAdmin - система управления MySQL через Web-интерфейс.
Ядро Perl без стандартных библиотек (они поставляются отдельно).
Эмулятор sendmail (отладочная «заглушка», складывающая приходящие письма в /tmp), поддерживающий работу совместно с PHP и Perl.
Инсталлятор (аналог InstallShield). [1]
Запускаем дистрибутив Base_PHP. exe (который можно найти в Интернете, а так же дополнительные приложения к нему, по необходимости). При установке вначале архив будет распакован во временную директорию, а затем автоматически запустится инсталлятор.
При запуске инсталлятора Вы увидите сообщение:
Рис. 7 Сообщение при запуске инсталляции
Нажимаем клавишу Enter.
Далее Вас спросят о том, в какую папку вы хотели бы установить комплекс (по умолчанию используется C: \WebServers). В указанном каталоге будут расположены абсолютно все компоненты системы. Желательно оставить эту папку без изменений и нажать клавишу Enter.
Далее будет предложено ввести имя виртуального диска, который будет связан с только что указанной директорией. Рекомендую вам согласиться со значением по умолчанию (Z:). Важно, что диска с этим именем еще не должно содержаться в системе - чаще всего так и происходит с диском Z:.
После этого начнется копирование файлов дистрибутива, а под конец вам будет задан вопрос, как именно вы собираетесь запускать и останавливать комплекс. У вас есть две альтернативы:
Создавать виртуальный диск при загрузке машины, а при остановке серверов его (диск) не отключать. Это наиболее удобный режим, поэтому выберите его.
Создавать виртуальный диск только по явной команде старта комплекса (при щелчке по ярлыку запуска). И, соответственно, отключать диск от системы - при остановке серверов. [2]
После установки проверяем работу комплекта.
Запустим комплект (с помощью ярлыка на Рабочем столе или в директории C: \WebServers\etc необходимо щелкнуть по файлу Run. exe, а затем, дождавшись, когда все консольные окна исчезнут, открыть браузер).
В настройках браузера проверяем отключен ли у нас прокси-сервер. В меню Сервис выбираем Свойства обозревателя и выбираем вкладку подключение:
Рис. 8 Проверка прокси-сервера
Выбираем следующие настройка LAN:
Рис. 9 Настройка LAN
Обязательно убираем галочку «Использовать прокси-сервер…».
Сохраняем новые настройки.
В адресной строке браузера набираем адрес: http: //localhost. Должно появиться окно следующего вида:
Рис. 10 Рабочее окно
Если тестовая страница все же не загрузится, проверьте:
Запущен ли Денвер? Если да, нет ли ошибок при щелчке на пиктограмме пера (справа внизу)?
Не запущен ли у вас какой-то другой Web-сервер, который мешает Денверу (часто бывает в Windows XP)? Например, Microsoft IIS? Если да, отключите его. [2]
1.4 Основные утилиты MySQL
В стандартном дистрибутиве MySQL поставляются клиентские программы (утилиты), взаимодействующие с MySQL-сервером: mysql (консольный клиент для доступа к MySQL-серверу, позволяющий выполнять SQL-запросы), mysqladmin (утилита для выполнения административных функций, таких как создание или удаление баз данных, получение информации о процессах, состоянии сервера и т. п.), mysqldump (утилита для вывода содержимого базы данных MySQL в виде текстового файла с SQL-операторами), mysqlimport (выполняет перенос информации из текстового файла в таблицы баз данных) и mysqlshow (отображает информацию о существующих базах данных, таблицах, полях и индексах). [3]
К утилитам, которые могут функционировать без подключения к серверу MySQL, относятся: myisampack (сжимает таблицы типа MylSAM, уменьшая их в размере и делая доступными только для чтения), mysqlcheck (утилита, используемая для описания, проверки, оптимизации и восстановления таблиц), mysqlbinlog (данная утилита используется для чтения содержимого журнала двоичной регистрации при восстановлении данных в нештатных ситуациях) и perror (утилита, которая выводит расшифровку кодов системных ошибок и ошибок MySQL).
Рассмотрим эти средства более подробно.
Утилита mysql
Консольный клиент mysql часто называют «терминальным монитором» или просто «монитором». В Windows для запуска mysql необходимо перейти в каталог C: \mysql5\bin (конечно, если MySQL установлен в каталог C: \mysql5) и набрать в командной строке имя утилиты. Для соединения с сервером базы данных в параметрах утилиты mysql необходимо указать имя пользователя и его пароль. Например, подключиться к серверу от имени пользователя root можно, набрав команду (пароль root по умолчанию пустой):
C: \mysql5\bin>mysql -u root
В результате выводится приглашение
mysql>
за которым можно набирать команды. Команды и SQL-инструкции, за редким исключением (exit, quit, use), должны заканчиваться точкой с запятой.
Параметры в утилитах MySQL могут иметь две формы: полную, начинающуюся с двух дефисов (например, --user), и краткую, которая начинается с одного дефиса (например, -u). Можно применять оба варианта, но для ряда параметров имеется только полная форма.
Когда пользователь вводит команду, она отправляется на сервер для выполнения, и, если нет ошибок в синтаксисе, на экран выводится результат в виде результирующей таблицы, а на новой строке приглашение mysql>, после которого можно вводить новые команды. Для ввода ключевых слов можно использовать любой регистр символов.
Если команда не помещается на одной строке, возможен переход на другую строку, после нажатия клавиши <Enter> - запрос отправляется серверу только после того, как консольный клиент mysql встретит символ точки с запятой. Приглашение командной строки после ввода первой строки этого запроса меняется с mysql > на ->:
mysql> SELECT VERSION ()
-> CURRENT_DATE;
Таким образом программа mysql показывает, что завершенного выражения она пока что не получила и ожидает его полного ввода. Точно так же утилита mysql ведет себя, когда ожидает завершения строки, заключенной в двойные или одинарные кавычки: приглашение командной строки меняется с mysql > на «>. Если строка заключена в одинарные кавычки, приглашение меняется на ' >. Для того чтобы отменить текущий запрос, следует ввести последовательность \с.
Уже введенные ранее команды не обязательно вводить снова, для этого достаточно их вызвать клавишами «стрелка вверх» и «стрелка вниз», очистить строку запроса можно при помощи клавиши <Esc>. Полный список комбинаций клавиш, которые применяются в редакторе утилиты mysgl, можно увидеть, например, в [1].
Установка соединения с удаленным хостом производится так:
C: \mysql5\bin>mysql -u root -h 192. 168. 200. 1 -P 3306
Здесь 192. 168. 200. 1 - IP-адрес хоста, 3306 - номер порта, к которому приписан установленный сервер. Для успешной установки соединения на сервере должны быть прописаны IP-адреса, с которых пользователь может обращаться к MySQL-серверу.
Приведем некоторые внутренние команды утилиты mysql. Каждая команда имеет краткую и полную форму:
CONNECT (\r). Команда используется в формате (здесь и далее необязательные элементы синтаксиса будут заключаться в квадратные скобки)
CONNECT[db_name[host_name]]
для подключения к базе данных <db name>, расположенной на хосте host_name. Если имя базы данных и хоста не указаны, вместо них используются значения из текущего сеанса mysql.
HELP (\h). Отображает справочную информацию о доступных командах в текущей версии mysql
USE (\u). Команда USE db_name позволяет выбрать базу данных db_name для последующей работы с ней.
Приведем пример создания таблицы tbl в уже существующей базе dbase:
mysql> USE dbase;
mysql> CREATE TABLE tbl (number INT, name TEXT) ; [3], [2]
Утилита mysqladmin
В MySQL базы данных представляют собой подкаталоги, расположенные в каталоге данных C: \mysql5\data, имена которых совпадают с именами баз данных. Создание в этом каталоге нового подкаталога аналогично процедуре создания новой базы данных при помощи оператора CREATE DATABASE.
Утилита mysqladmin позволяет выполнять операции администрирования баз данных из командной строки, не используя SQL-запросы. С ее помощью можно создавать и уничтожать базы данных; контролировать сервер. При запуске mysqladmin можно задавать как параметры, так и команды, которых может быть несколько. Например, команда
mysqladmin -u root create db_name
создаст новую базу данных с именем db_name.
Полный список команд, которые поддерживаются mysqladmin, приведен в [1, 2]
Утилита mysqldump
Утилита mysqldump позволяет получить дамп содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL-сервер (не обязательно MySQL). Дамп будет содержать набор команд SQL для создания и/или заполнения таблиц.
Пусть мы имеем готовую базу данных db. Создадим ее дамп:
C: \mysql5\bin> mysqldump -u root db > db. sql
Утилита mysqldump принимает имя пользователя при помощи параметра -u. Кроме этого, после всех параметров указывается имя базы данных db, для которой осуществляется создание дампа. Так как вывод данных осуществляется в стандартный поток (за которым по умолчанию закреплен экран монитора), его следует перенаправить в файл (в нашем примере это db. sql).
Перенаправление данных осуществляется при помощи оператора >. Если вместо оператора > использовать «, то данные не будут перезаписывать уже существующий файл, а будут добавлены в конец файла.
Mysqldump поддерживает несколько специальных параметров (полный список параметров утилит MySQL можно посмотреть в [1]) К ним относится параметр --databases или в сокращенной форме -В. [5]
Данный параметр позволяет создать дамп сразу нескольких баз данных, которые можно перечислить через пробел после него.
Так, следующая команда сохраняет дампы баз данных db и mysql в файл db_mysql. sql:
С: \mysql5\bin> mysqldump -u root -B db mysql > db_mysql. sql
Если необходимо сохранить дамп всех баз данных MySQL-сервера, следует воспользоваться параметром --all-databases или в сокращенной форме -А:
mysqldump -u root --all-databases > all_databases. sgl
Полученный в результате дамп базы данных представляет собой текстовый файл с SQL-инструкциями, выполнить которые можно при помощи утилиты mysql.
При развертывании дампа базы данных удобно воспользоваться следующей командой:
mysql -u root db_1 < db. sql
Здесь данные из дампа db. sql перенаправляются на стандартный вход утилиты mysql, которая размещает таблицы базы данных db в базе db_1. [1]
Журнальные файлы. Утилита mysqlbinlog
MySQL поддерживает несколько видов журнальных файлов, в которых регистрируются различные события, происходящие на MySQL-сервере.
В журнал ошибок помещаются сообщения обо всех ошибках, происходящих во время запуска, работы или остановки MySQL-сервера. Общий журнал запросов позволяет регистрировать все ycтановленные клиентом соединения и выполненные запросы. Бинарный журнал регистрации регистрирует все операторы, которые приводят к изменению данных. В Журнал медленных запросов заносятся все запросы, выполнение которых потребовало больше времени, чем указано в системной темной переменной long_query_time (в секундах)
Файлы бинарного журнала, которые генерирует сервер, записываются в двоичном формате. Для работы с такими файлами используется утилита mysqlbinlog. Синтаксис вызова утилиты mysqlbinlog выглядит следующим образом:
mysqlbinlog [parameters] filename
Здесь parameters - параметры утилиты, a filename -имя файла бинарного журнала. Например, для того чтобы отобразить содержимое бинарного журнала binlog. 003, можно воспользоваться командой:
mysqlbinlog binlog. 003[2]
Утилиты mysqlimport, mysqlshow и mysqlcheck
Для пакетной загрузки данных из текстового файла в таблицу в MySQL может быть использована утилита mysqlimport:
mysqlimport [параметры] db_name tb1. txt tb2. txt...
Здесь db_name - имя базы данных, с которой будет работать утилита. Далее через пробел указываются имена текстовых файлов, информация из которых будет загружена в таблицы базы данных. При этом имена таблиц должны совпадать с именами этих файлов.
Для правильного разделения содержимого текстовых файлов по колонкам таблиц поля записей в них должны быть разделены символом табуляции.
Утилита mysqlshow предоставляет средства для быстрого просмотра имеющихся на сервере баз данных, их таблиц, столбцов таблиц и индексов:
mysqlshow [параметры] [db_name [tb1_name [col_name]]]
После имени утилиты перечисляются параметры, затем указывается имя базы данных db_name, таблица tb1_name и столбец col_name. Если не указана база данных, отображаются все базы данных, просмотр которых разрешен текущему пользователю. Если не указаны таблицы, отображаются все таблицы базы db_name. Если не указаны столбцы, то отображаются все столбцы таблицы tb1_name.
В именах баз данных, таблиц и столбцов можно использовать шаблоны: символ «*» или «% « соответствует любому числу символов, символ «?» или «_» - одному произвольному символу.
Утилита mysqlcheck проверяет и восстанавливает таблицы типа MyISAM. Для утилиты mysqlcheck существует альтернативная утилита myisamchk. Основное отличие этих двух функций заключается в том, что утилита mysqlcheck должна использоваться при запущенном сервере MySQL, а myisamchk - нет. Существуют три основных способа запуска утилиты mysqicheck:
mysqlcheck [parameter] db_name [tables]
mysqlcheck [parameter] --databases db_namel [db_name2 db_name3. ]
mysqlcheck [parameter] --all-databases
Если не указываются никакие таблицы tables или используется параметр --databases или --all-databases, будут проверены все базы данных.
При вызове утилиты с параметром --check осуществляется поверка таблиц (значение по умолчанию), при вызове с параметром --repair - восстановление таблиц, при вызове с параметром --analyze - анализ таблиц, при вызове с параметром --optimize - оптимизация таблиц. [4], [3]
1.5 Работа с виртуальными хостами
Прежде, чем продолжить, убедимся (для пользователей Windows NT, 2000 или XP и старше), что у вас запущена служба «DNS-клиент». Это можно сделать, открыв Панель управления - Администрирование - Службы. В противном случае виртуальные хосты работать не будут.
Чтобы добавить новый хост, нам нужно проделать следующее:
Создать в папке /home директорию с именем, совпадающим с именем виртуального хоста (в нашем случае это будет папка bekand. ru). [1]
На рисунке 11 показано, как может выглядеть директория /home.
Рис. 11 Директория /home
Создадим папку www в директории виртуального хоста, ведь именно в ней будут храниться его страницы и скрипты!
Перезапустим сервер, воспользовавшись, например, файлом Restart. exe в директории C: \WebServers\etc.
1.6 Работа с сервером MySQL
В конце 80-х годов доминирующей стала система управления реляционными базами данных (СУРБД). С этого времени такие СУБД стали стандартом де-факто, и для того, чтобы унифицировать работу с ними, был разработан структурированный язык запросов - SQL, который представляет собой язык управления реляционными базами данных.
Используя SQL, можно осуществлять поиск, вводить новые данные или удалять данные. SQL является основополагающим инструментом, необходимым для взаимодействия с MySQL. Даже если для доступа к базе данных мы пользуетесь каким-то приложением или графическим интерфейсом пользователя, где-то в глубине это приложение все равно генерирует SQL-команды.
SQL является разновидностью «естественного языка». Т. е. команда SQL должна читаться как предложение английского языка. У такого подхода есть как преимущества, так и недостатки, но факт заключается в том, что этот язык очень непохож на традиционные языки программирования, такие как С, Java или Perl.
Для создания баз данных СУБД MySQL мы будем использовать систему phpMyAdmin - систему управления MySQL через Web-интерфейс. PhpMyAdmin можно запустить, выбрав соответствующую гиперссылку в разделе утилиты на localhost. [3]
Команда CREATE DATABASE создает новую базу данных:
CREATE DATABASE db_name;
Здесь db_name является именем создаваемой базы данных
Однако воспользуемся графическим интерфейсом для создания БД. Запустите phpMyAdmin и создайте базу данных bekand:
Рис. 12 Запуск phpMyAdmin
1.7 Работа с таблицами в БД
Создание таблиц. Создав базу данных, можно приступить к созданию таблиц БД. Таблица, т. е. структурированное вместилище данных, является основным понятием реляционных баз. Прежде чем начать вводить данные в таблицу, мы должны определить ее структуру.
Таблица содержит не только имена колонок, но и тип каждого поля, а также возможные дополнительные сведения о полях. Тип данных поля определяет, какого рода данные могут в нем содержаться. Типы данных SQL сходны с типами данных в других языках программирования. [4]
Общий синтаксис для создания таблиц следующий:
CREATE TABLE table_name (column_name1 type [modifiers]
[, column_name2 type [modifiers]])
Какие идентификаторы (имена таблиц и колонок) - являются допустимыми, зависит от конкретной СУБД. В MySQL длина идентификатора может быть до 64 символов, допустим символ «$», и первым символом может быть цифра. Более важно, однако, что MySQL допускает использование любых символов из установленного в системе локального набора. Для хорошей переносимости SQL необходимо избегать имен, начинающихся не с допустимой буквы.
Колонка - это отдельная единица данных в таблице. В таблице может содержаться произвольное число колонок, но использование больших таблиц бывает неэффективным. Создав правильно нормализованные таблицы, можно объединять их («join») для осуществления поиска в данных, размещенных в нескольких таблицах.
PhpMyAdmin дает нам возможность создавать таблицы двумя способами.
1-й способ. Во-первых, мы можем использовать команду создать таблицу, указав ее название и число полей:
Рис. 13 1-й способ создания таблицы
Затем нужно описать каждое из полей:
Рис. 14 Описание полей
После чего нажмите на кнопке Сохранить и таблица будет готова.
Удалить созданную таблицу можно, используя ссылку Уничтожить.
2-й способ. Мы можем создать таблицу, используя команду SQL CREATE TABLE, выбрав вкладку SQL:
CREATE TABLE `goodslist' (
`CID' INT (11) NULL, `ID' INT (11) NOT NULL auto_increment,
`Name' VARCHAR (30) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL, `Price' FLOAT NOT NULL,
`Picture' VARCHAR (40) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL, PRIMARY KEY (`ID')
) ;
Создаем еще две таблицы orderedcarts и orders, используя язык SQL:
CREATE TABLE `orderedcarts' (
`GID' INT (11) NULL, `Quantity' INT (11) NULL,
`OID' INT (11) NULL
) ;
CREATE TABLE `orders' (
`OID' INT (11) NOT NULL auto_increment,
`Name' CHAR (50) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL, `Email' CHAR (50) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL, `Address' CHAR (50) CHARACTER SET cp1251 COLLATE cp1251_general_ci NULL, PRIMARY KEY (`OID')
) ;
Тем самым мы создали базу данных из четырех таблиц:
Categories: таблица категорий:
Табл. 1 «Таблица категорий»
CID |
Name |
CID (INT) PRIMARY KEY - идентификатор категории (положительное число)
Name (CHAR (30)) - название категории, которое видят пользователи
GoodsList: здесь хранится информация о всех товарах:
Табл. 2 «Товары»
CID |
ID |
Name |
Price |
Picture |
CID (INT) - идентификатор категории, в которой лежит товар
ID (INT) PRIMARY KEY - идентификатор товара
Name (CHAR (200)) - наименование товара
Price (FLOAT) - цена
Picture (CHAR (40)) - имя файла-фотографии товара. Все фотографии товаров закачиваются в директорию goods_pictures/ на сервере
Orders: таблица заказов
Табл. 3 «Заказы»
OID |
Name |
|
Address |
OID (INT) PRIMARY KEY - идентификатор заказа
Name (CHAR (50)) - имя заказчика
Email (CHAR (50)) - его email
Address (CHAR (100)) - адрес
4. OrderedCarts: после того, как заказ оформлен, товары из корзины покупателя переносим в таблицу OrderedCarts
Значения OID в таблице Orders и OrderedCarts одинаковы для определенного заказа
Табл. 4 «Оформленный заказ»
GID |
Quantity |
OID |
GID (INT) - ID товара
Quantity (INT) - его коливество
OID (INT) - ID заказа, в котором заказан товар GID
Следующей командой можно удалить таблицу:
DROP TABLE table_name
MySQL уничтожит все данные удаленной таблицы. Если у нас не осталось резервной копии, нет абсолютно никакого способа отменить действие данной операции. Поэтому всегда необходимо хранить резервные копии и быть очень внимательным при удалении таблиц.
В MySQL можно одной командой удалить несколько таблиц, разделяя их имена запятыми, например:
DROP TABLE categories, goodslist, orders
удалит эти три таблицы. Можно также использовать модификатор IF EXISTS для подавления ошибки в случае отсутствия удаляемой таблицы. Этот модификатор полезен в больших сценариях, предназначенных для создания базы данных и всех ее таблиц. Прежде чем создавать новую таблицу, выполниv команду DROP TABLE table_name IF EXISTS. [3], [5]
1.8 Управление данными
Первое, что мы делаем, создав таблицу, это добавляем в нее данные. Если данные уже есть, может возникнуть необходимость изменить или удалить их.
Добавление данных. Добавление данных в таблицу является одной из наиболее простых операций SQL. MySQL поддерживает стандартный синтаксис INSERT:
INSERT INTO table_name (column1, column2,..., columnN)
VALUES (value1, value2,..., valueN)
Данные для числовых полей вводятся, как они есть. Для всех других полей вводимые данные заключаются в одиночные кавычки. Например, для ввода данных в таблицу наименования можно выполнить следующую команду:
INSERT INTO `goodslist' (`CID', `Name', `Price') VALUES
(1, 'Sony MFM-HT205', 691),
Кроме того, управляющий символ - по умолчанию '\' - позволяет вводить в литералы одиночные кавычки и сам символ '\':
# Ввести данные в каталог Stacie's Directory, который находится
# в c: \Personal\Stacie
INSERT INTO files (description, location)
VALUES ('Stacie\'s Directory', 'C: \\Personal\\Stacie')
MySQL позволяет опустить названия колонок, если значения задаются для всех колонок и в том порядке, в котором они были указаны при создании таблицы командой CREATE. Однако если мы хотим использовать значения по умолчанию, нужно задать имена тех колонок, в которые мы вводим значения, отличные от установленных по умолчанию. Если для колонки не установлено значение по умолчанию, и она определена как NOT NULL, необходимо включить эту колонку в команду INSERT со значением, отличным от NULL. MySQL позволяет указать значение по умолчанию при создании таблицы в команде CREATE.
Новые версии MySQL поддерживают INSERT для одновременной вставки нескольких строк:
INSERT INTO foods VALUES
(NULL, 'Oranges', 133, 0, 2, 39),
(NULL, 'Bananas', 122, 0, 4, 29),
(NULL, 'Liver', 232, 3, 15. 10)
Хотя поддерживаемый MySQL нестандартный синтаксис удобно использовать для быстрого выполнения задач администрирования, не следует без крайней нужды пользоваться им при написании приложений. Как правило, следует придерживаться стандарта ANSI SQL2 настолько близко, насколько MySQL это позволяет. Благодаря этому мы получаем возможность перейти в будущем на какую-нибудь другую базу данных. Переносимость особенно важна для тех, у кого потребности среднего масштаба, поскольку такие пользователи предполагают когда-нибудь перейти на полномасштабную базу данных.
MySQL поддерживает синтаксис SQL2, позволяющий вводить в таблицу результаты запроса:
INSERT INTO foods (name, fat)
SELECT food_name, fat_grams FROM recipes
Обратим внимание, что число колонок в INSERT соответствует числу колонок в SELECT. Кроме того, типы данных колонок в INSERT должны совпадать с типами данных в соответствующих колонках SELECT. И, наконец, предложение SELECT внутри команды INSERT не должно содержать модификатора ORDER BY и не может производить выборку из той же таблицы, в которую вставляются данные командой INSERT. [2], [4]
Добавим данные в две следующие таблицы:
INSERT INTO `categories' (`CID', `Name') VALUES
(1, ' Monitors'),
(2, ' Printers'),
(3, ' Noutbuki') ;
INSERT INTO `goodslist' (`CID', `Name', `Price') VALUES
(1, 'Sony MFM-HT205', 691),
(1, 'Samsung 214T', 707),
(2, 'Canon Laser Shot LBP-2900', 119),
(2, 'МФУ Samsung SCX-4200', 176),
(3, 'HP Pavilion 6550', 950) ;
1.9 Системы безопасности MySQL
MySQL использует собственный сервер баз данных для обеспечения безопасности. При первоначальной установке MySQL создается база данных под названием «mysql». В этой базе есть пять таблиц: db, host, user, tables_priv, и columns_priv. Более новые версии MySQL создают также базу данных с названием func, но она не имеет отношения к безопасности.
MySQL использует эти таблицы для определения прав пользователей:
Таблица user содержит данные по безопасности, относящиеся к серверу в целом.
Таблица host содержит права доступа к серверу для удаленных компьютеров.
db, tables_priv и соlumns_priv управляют доступом к отдельным базам данных, таблицам и колонкам.
Мы кратко рассмотрим все таблицы, поддерживающие безопасность в MySQL, а затем рассмотрим технологию их использования при обеспечении защиты ядром MySQL.
Таблица user имеет структуру, показанную ниже:
Табл. 5 «Структура USER»
Поле |
Тип |
Null |
Ключ |
Значение по умолчанию |
|
Host |
char (60) |
PRI |
|||
User |
char (16) |
PRI |
|||
Password |
char (16) |
||||
Select_priv |
enum ('N', 'Y') |
N |
|||
Insert_priv |
enum ('N', 'Y') |
N |
|||
Update_priv |
enum ('N', 'Y') |
N |
|||
Delete_priv |
enum ('N', 'Y') |
N |
|||
Create_priv |
enum ('N', 'Y') |
N |
|||
Drop_priv |
enum ('N', 'Y') |
N |
|||
Reload_priv |
enum ('N', 'Y') |
N |
|||
Shutdown_priv |
enum ('N', 'Y') |
N |
|||
Process_priv |
enum ('N', 'Y') |
N |
|||
File_priv |
enum ('N', 'Y') |
N |
|||
Grant_priv |
enum ('N', 'Y') |
N |
|||
References_priv |
enum ('N', 'Y') |
N |
|||
Index_priv |
enum ('N', 'Y') |
N |
|||
Alter_priv |
enum ('N', 'Y') |
N |
В колонках Host и User можно использовать символ «% «, заменяющий произвольную последовательность символов. Например, имя узла «chem% lab» включает в себя «chembiolab», «chemtestlab» и т. д. [1]
Специальное имя пользователя «nobody» действует как одиночный «% «, то есть охватывает всех пользователей, не упомянутых где-либо в другом месте.
Select_priv - Возможность выполнять команды SELECT.
Insert_priv - Возможность выполнять команды INSERT.
Update_priv - Возможность выполнять команды UPDATE.
Delete_priv - Возможность выполнять команды DELETE.
Create_priv - Возможность выполнять команды CREATE или создавать базы данных.
Drop_priv - Возможность выполнять команды DROP для удаления баз данных.
Reload_priv - Возможность обновлять информацию о доступе с помощью mysqladmin reload.
Shutdown_priv - Возможность останавливать сервер через mysqladmin shutdown.
Process_priv - Возможность управлять процессами сервера.
File_priv - Возможность читать и записывать файлы с помощью команд типа SELECT INTO OUTFILE и LOAD DATA INFILE.
Grant_priv - Возможность давать привилегии другим пользователям.
Index_priv - Возможность создавать и уничтожать индексы.
Alter_priv - Возможность выполнять команду ALTER TABLE.
В MySQL есть специальная функция, позволяющая скрыть пароли от любопытных глаз. Функция password () зашифровывает пароль. Ниже показано, как использовать функцию password () в процессе добавления пользователей в систему:
INSERT INTO user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv)
VALUES ('% ', 'bob', password ('mypass'), 'Y', 'Y', 'Y', 'Y')
INSERT INTO user (Host, User, Password, Select_priv)
VALUES ('athens. imaginary. com', 'jane', '', 'Y')
INSERT INTO user (Host, User, Password)
VALUES ('% ', 'nobody', '')
INSERT INTO user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv)
VALUES ('athens. imaginary. com', 'ivan', password ('thispass'), 'Y', 'Y', 'Y', 'Y')
Здесь первый созданный пользователь, «bob», может подключаться к базе данных с любого компьютера и выполнять команды SELECT, INSERT, UPDATE и DELETE. Второй пользователь, «jane», может подключаться с «athens. imaginary. com», не имеет пароля и может выполнять только SELECT. Третий пользователь - «nobody» - с любой машины. Этот пользователь вообще ничего не может делать. Последний пользователь - «ivan» - с машины «athens. imaginary. com», он может выполнять SELECT, INSERT, UPDATE и DELETE, как и пользователь «bob».
Имена пользователей MySQL обычно не связаны с именами пользователей операционной системы. По умолчанию клиентские средства MySQL используют при регистрации имена пользователей операционной системы, однако, обязательного соответствия не требуется. В большинстве клиентских приложений MySQL можно с помощью параметра -u подключиться к MySQL, используя любое имя. Ваше имя пользователя операционной системы не появится в таблице user, если не будет специально включено в нее с присвоением прав.
Как MySQL производит сопоставление? Некоторое имя может соответствовать на деле нескольким записям. Например, «nobody @athens. imaginary. com» соответствует и «nobody@% «, и «nobody@athens. imaginary. com». Прежде чем осуществлять поиск в таблице user, MySQL сортирует данные следующим образом:
Сначала ищется соответствие для узлов, не содержащих масок «% «, при этом пустое поле Host трактуется как «% «.
Для одного и того же узла сначала проверяется соответствие имен, не содержащих масок. Пустое поле User трактуется как содержащее «% «.
Первое найденное соответствие считается окончательным. [2]
В предыдущем примере пользователь сначала будет сравниваться с «nobody» из «athens. imaginary. com», поскольку «athens. imaginary. com» в порядке сортировки стоит выше «% «. Поскольку имена компьютеров сортируются раньше имен пользователей, значения привилегий для компьютера, с которого вы подключаетесь, имеют приоритет перед любыми конкретными правами, которые у вас могут быть. Если таблица user содержит записи:
Табл. 6 «Привилегии»
Host |
User |
|
% |
jane |
|
athens. imaginary. com |
и jane подключается с «athens. imaginary. com», то MySQL будет использовать привилегии, данные «athens. imaginary. com».
Таблица db. В таблице user не упоминаются конкретные базы данных и таблицы. Таблица user управляет сервером в целом. Однако на сервере обычно находится несколько баз данных, которые служат различным целям и, соответственно, обслуживают разные группы пользователей. Права доступа к отдельным базам данных хранятся в таблице db:
Таблица 7. «Таблица db»
Поле |
Тип |
Null |
Ключ |
Значение по умолчанию |
|
Host |
char (60) |
PRI |
|||
Db |
char (32) |
PRI |
|||
User |
char (16) |
PRI |
|||
Select_priv |
enum ('N', 'Y') |
N |
|||
Insert_priv |
enum ('N', 'Y') |
N |
|||
Update_priv |
enum ('N', 'Y') |
N |
|||
Delete_priv |
enum ('N', 'Y') |
N |
|||
Create_priv |
enum ('N', 'Y') |
N |
|||
Drop_priv |
enum ('N', 'Y') |
N |
|||
References_priv |
enum ('N', 'Y') |
N |
|||
Index_priv |
enum ('N', 'Y') |
N |
|||
Alter_priv |
enum ('N', 'Y') |
N |
Эта таблица во многом похожа на таблицу user. Основное отличие в том, что вместо колонки Password имеется колонка Db. Таблица управляет правами пользователей в отношении определенных баз данных. Поскольку привилегии, указанные в таблице user, относятся ко всему серверу в целом, права, присвоенные пользователю в таблице user, перекрывают права, присвоенные тому же пользователю в таблице db. Например, если пользователю в таблице user разрешают доступ типа INSERT, это право действует в отношении всех баз данных, вне зависимости от того, что указано в таблице db. [3]
Наиболее эффективно создание в таблице user записей для всех пользователей, в которых не даны никакие права. В этом случае пользователь может лишь подключиться к серверу, не выполняя никаких действий. Исключение делается только для пользователя, назначенного администратором сервера. Все остальные должны получить права доступа через таблицу db. Каждый пользователь должен присутствовать в таблице user, иначе он не сможет подключаться к базам данных.
Те же правила, которые действуют в отношении колонок User и Host в таблице user, действуют и в таблице db, но с некоторой особенностью. Пустое поле Host вынуждает MySQL найти запись, соответствующую имени узла пользователя, в таблице host. Если такой записи не найдено, MySQL отказывает в доступе. Если соответствие найдено, MySQL определяет права как пересечение прав, определяемых таблицами host и db. Иными словами, в обеих записях разрешение должно иметь значение «Y», иначе в доступе отказывается. [3]
Таблица host. Таблица host служит особой цели. Ее структура показана в таблице 8:
Таблица 8. «Таблица Host»
Поле |
Тип |
Null |
Ключ |
Значение по умолчанию |
|
Host |
char (60) |
PRI |
|||
Db |
char (32) |
PRI |
|||
Select_priv |
enum ('N', 'Y') |
N |
|||
Insert_priv |
enum ('N', 'Y') |
N |
|||
Update_priv |
enum ('N', 'Y') |
N |
|||
Delete_priv |
enum ('N', 'Y') |
N |
|||
Create_priv |
enum ('N', 'Y') |
N |
|||
Drop_priv |
enum ('N', 'Y') |
N |
|||
Grant_priv |
enum ('N', 'Y') |
N |
|||
References_priv |
enum ('N', 'Y') |
N |
|||
Index_priv |
enum ('N', 'Y') |
N |
|||
Alter_priv |
enum ('N', 'Y') |
N |
Таблица host позволяет задать основные разрешения на межкомпьютерном уровне. При проверке прав доступа MySQL ищет в таблице db соответствие имени пользователя и его машине. Если он находит запись, соответствующую имени пользователя, поле host которой пусто, MySQL обращается к таблице host и использует пересечение обоих прав для определения окончательного права доступа. Если у вас есть группа серверов, которые вы считаете менее защищенными, то вы можете запретить для них все права записи. Если «bob» заходит с одной из таких машин, и его запись в таблице db содержит пустое поле host, ему будет запрещена операция записи, даже если она разрешена ему согласно таблице db.
Таблицы tables_priv и columns_priv. Эти две таблицы, по сути, уточняют данные, имеющиеся в таблице db. Именно, право на всякую операцию сначала проверяется по таблице db, затем по таблице tables_priv, затем по таблице columns_priv. Операция разрешается, если одна из них дает разрешение. С помощью этих таблиц можно сузить область действия разрешений до уровня таблиц и колонок. Управлять этими таблицами можно через команды SQL GRANT и REVOKE. [4]
Последовательность контроля доступа. MySQL осуществляет контроль доступа в два этапа. Первый этап - подключение. При подключении проводятся две проверки. Сначала MySQL проверяет, есть ли в таблице user запись, соответствующая имени пользователя и машины, с которой он подключается. Поиск соответствия основывается на правилах, которые мы обсудили раньше. Если соответствие не найдено, в доступе отказывается. В случае, когда соответствующая запись найдена и имеет непустое поле Password, необходимо ввести правильный пароль. Неправильный пароль приводит к отклонению запроса на подключение.
Если соединение установлено, MySQL переходит к этапу верификации запроса. При этом сделанные вами запросы сопоставляются с вашими правами. Эти права MySQL проверяет по таблицам user, db, host, tables_pnv и columns_priv. Как только найдено соответствие в таблице user с положительным разрешением, команда немедленно выполняется. В противном случае MySQL продолжает поиск в следующих таблицах в указанном порядке:
db
tables_priv
columns_priv
Если таблица db содержит разрешение, дальнейшая проверка прекращается и выполняется команда. Если нет, то MySQL ищет соответствие в таблице tables_priv. Если это команда SELECT, объединяющая две таблицы, то пользователь должен иметь разрешения для обеих этих таблиц. Если хотя бы одна из записей отказывает в доступе или отсутствует, MySQL точно таким же способом проверяет все колонки в таблице columns_priv.
Изменение прав доступа. MySQL загружает таблицы доступа при запуске сервера. Преимуществом такого подхода по сравнению с динамическим обращением к таблицам является скорость. Отрицательная сторона состоит в том, что изменения, производимые в таблицах доступа MySQL, не сразу начинают действовать. Для того чтобы сервер увидел эти изменения, необходимо выполнить команду mysqladmin reload. Если таблицы изменяются с помощью SQL-команд GRANT или REVOKE, явно перегружать таблицы не требуется. [5]
PhpMyAdmin дает нам возможность управлять пользователями с помощью раздела привилегии:
Рис. 15 Интерфейс PhpMyAdmin
В разделе привилегии выбираем пункт добавить нового пользователя.
Создаем пользователя Bekshenev с паролем 09111972 и без глобальных прав доступа:
Рис. 16 Создание нового пользователя
Теперь назначим ему права для выбора, вставки, обновления и удаления данных в базе данных bekand:
Рис. 17 Назначение прав для нового пользователя выбора, вставки, обновления и удаления данных в базе данных
Выбираем bekand и нажимаем «Пошел».
Теперь для таблицы bekand назначаем права select, insert, update, delete и нажимаем пошел:
Рис. 18 Назначение прав для select, insert, update, delete
2. Разработка PHP страницы для Интернет-магазина
Используя MySQL, необходимо создать базу данных для электронного магазина (Web-сервера), торгующего компьютерной техникой.
Далее создадим страничку index. php:
<? //главная страница function showGood ($a, $cat) { //рисует таблицу с картинкой товара $a, его названием, ценой... //$cat -- сторка, которая пишется вверху таблицы -- это путь к категории, в которой находится товар echo «<center><p><table width=95% border=0 cellspacing=1 cellpadding=2 bgcolor=#E1E6FC>\n»; echo «<tr bgcolor=#D1D9F8>\n<td colspan=3><font color=#3551C7>«. $cat. «</font></td>\n</tr>\n»; echo «<tr bgcolor=#FFFFFF>\n<td rowspan=2 width=1% align=center valign=top>\n»; //теперь показать фотографию товара //изображение товара if ($a[4] && file_exists («goods_pictures/». $a[4])) echo «<img src=\»goods_pictures/». $a[4]. «\» border=0>\n»; else //нет фотографии echo «<img src=\»images/no_image. jpg\» border=0>\n»; echo «</td>\n»; echo «<td width=80% >\n»; echo «<font class=cat><b>«. $a[2]. «</b></font>\n»; if ($a[3]>0) { //писать ссылку на добавление в корзину, только если цена > 0 $f=2; echo «</td><td bgcolor=#FFFFFF align=center><a href=\»javascript: open_window ('cart. php? add=«. $a[1]. «', 400, 300) ; \»><img src=\»images/cart. jpg\» border=0 alt=\»в коpзину\»></a></td>\n»; } else $f = 1; echo «<tr bgcolor=#FFFFFF><td colspan=$f><b>Цена: <font class=cat color=red>«; echo $a[3]? $a[3]. «$»: «n/a»; echo «</font></b></td></tr>\n»; echo «</table></p></center>\n\n»; }; include («head. incl») ; //логотип //основная таблица: здесь список категорий? > <table border=0 width=100% cellspacing=5 cellpadding=5> <tr> <? if ($CID || isset ($GID)) { // список категорий «сбоку» echo «<td width=120 valign=top><table border=0 cellspacing=2 width=120>«; //список категорий processCategories ($CID) ; echo «</table>«; echo «</td>«; };? > <td valign=top width=100% > <? if ($CID) { //показать товары выбранной категории $q = mysql_query («SELECT * FROM Categories WHERE CID=$CID») or die (mysql_error ()) ; if (! ($r = mysql_fetch_row ($q))) exit; echo «<font class=cat><b><u>$r[1]: </u></b></font>\n<center>«; //теперь показать товары $q = mysql_query («SELECT * FROM GoodsList WHERE CID=$CID ORDER BY Price») or die (mysql_error ()) ; $i=0; $result = array () ; while ($row = mysql_fetch_row ($q)) { $result[$i] = $row; $i++; }; if (! $i) { //если кол-во товаров в категории = 0 echo « < нет товаров >«; } else { //$i! = 0 -- показываем товары в этой категории for ($i=0; $i<count ($result) ; $i++) showGood ($result[$i], $r[1], true) ; }; echo «</center>«; } else { //показать начальную страницу (витрину) -- некоторый текст + развернутый список всех категорий echo «<center><table width=78% >Здравствуйте»; if (isset ($log)) echo «, <b>«. stripslashes ($log). «</b>«; echo «! <br>Добро пожаловать в наш магазин! </table><br>\n»; //категории помещаем в теблицу -- в 2 столбца, поэтому надо посчитать кол-во корневых категорий -- половину в один столбец, //половину -- в другой $q = mysql_query («SELECT * FROM Categories ORDER BY Name») or die (mysql_error ()) ; $k=0; $result = array () ; while ($row = mysql_fetch_row ($q)) { $result[$k++] = $row; }; echo «<table width=80% border=0>\n<tr><td width=50% >«; for ($i=0; $i<$k/2; $i++) echo «<a href=\»index. php? CID=«. $result[$i][0]. «\»>«. $result[$i][1]. «</a><br>«; echo «</td>\n<td valign=top>\n»; for (; $i<$k; $i++) echo «<a href=\»index. php? CID=«. $result[$i][0]. «\»>«. $result[$i][1]. «</a><br>«; echo «</td>\n</tr>\n</table></center>\n»; };? > </td> </table> </body> </html>
Рис. 19 Главная страница
Рис. 20 Таблица «Товары»
Литература
Вавилова М. В., Симдянов И. В. MySQL5. - СПб. : БХВ-Петербург, 2016. 1024 с.
Компания MySQL АВ. MySQL. Справочник по языку - М. : Издательский дом «Вильямс», 2015. - 432 с.
Котеров Д. В., Костарев А. Ф. PHP5.. - СПб. : БХВ-Петербург, 2017. - 1120 с.
Установка и настройка MySQL сервера, https: //info-comp. ru/sisadminst/589-install-mysql-and-workbench-on-linux-mint. html, © 2019 Заметки IT специалиста
MySQL, https: //dev. mysql. com/downloads/, © 2019, Oracle Corporation and/or its affiliates
Размещено на Allbest.ru
Подобные документы
Установка и настройка локального web–сервера и его компонентов. Конфигурационные файлы сервера Apache и их натройка. Настройка PHP, MySQL и Sendmail. Проверка работоспособности виртуальных серверов. Создание виртуальных хостов. Тест Server Side Includes.
учебное пособие [6,2 M], добавлен 27.04.2009Программные средства, которые помогают манипулировать и управлять данными. Приемы создания и редактирования баз данных в СУБД MySQL. Способы и средства доступа и манипулирования данными. Создание, удаление, редактирование таблиц данных и их элементов.
практическая работа [1,2 M], добавлен 14.03.2013Общая характеристика системы управления базами данных MySQL, ее основные особенности и возможности, касающиеся обеспечения целостности данных. Реализация ограничений семантической и ссылочной целостности в СУБД MySQL на примере фрагмента ИС "Салон магии".
курсовая работа [981,0 K], добавлен 14.10.2012Общие сведения об операционной системе Linux. Анализ информации о серверах. Основные прикладные клиент-серверные технологии Windows. Сведения о SQL-сервере. Общая информация о MySQL–сервере. Установка и специфика конфигурирования MYSQL-сервера на LINUX.
курсовая работа [1,3 M], добавлен 16.12.2015Виды серверов баз данных. MySQL как наиболее приспособленная для применения в среде СУБД. Хранимые и присоединенные процедуры. Операционная среда серверов. Согласованность чтения и тупиковые ситуации. Установка и настройка MySQL Server 5.6 на Windows 7.
курсовая работа [3,0 M], добавлен 28.12.2015Основные технологии веб-программирования. Методы отправки данных на сервер с помощью HTML-формы. PHP - Препроцессор Гипертекста. Сохранение данных в базе данных MySQL. Клиент-Сервер и технология CGI. Примеры использования PHP совместно с MySQL.
лекция [2,9 M], добавлен 27.04.2009Характеристика и технические возможности СУБД MySQL. Трехуровневая структура MySQL. Требования к аппаратному обеспечению. Создание таблицы, триггеров, генераторов, хранимых процедур в MySQL. Разработка приложения для базы данных с помощью Borland Delphi.
курсовая работа [940,7 K], добавлен 20.12.2011Функции, позволяющие работать с базой данных MySQL средствами РНР. Соединение с сервером и его разрыв. Создание и выбор базы данных. Доступ к отдельному полю записи. Комплексное использование информационных функций. Запросы, отправляемые серверу MySQL.
лекция [3,5 M], добавлен 27.04.2009Этапы создания сайта с использованием СУБД – MySQL. Подключение блоков, наполнение текстовым содержанием путём ручного ввода данных в базу данных mysql. Создание администраторского раздела (админки), наполнение содержимым через администраторский раздел.
курсовая работа [4,5 M], добавлен 15.11.2012Общая характеристика СУБД MySQL. Отличительные черты физической организации хранения и обработки данных, имеющимся в СУБД MySQL. Характер связи между таблицами. Реализация ограничений семантической и ссылочной целостности на примере "Салон магии".
курсовая работа [965,5 K], добавлен 13.01.2013