Создание подключения и начало работы с MySQL
Во время процесса установки и тестирования MySQL, вы создали
тестовую базу данных, тестовую таблицу и даже записали и выбрали данные. Следующие
несколько глав будут посвящены созданию таких же типов подключений и запросов, используя
сценарии РНР в качестве интерфейса. В этой главе вы узнаете, как сделать следующее:
подключиться к MySQL;
получить список всех баз данных на сервере localhost;
получить список всех таблиц в базе данных;
создать базу данных;
Подключение к MySQL
Целью создаваемого в этом разделе сценария является просто подключение к MySQL,
которая запущена на вашей машине (localhost).
Создайте с помощью текстового редактора новый файл.
Начните РНР-блок. Создайте переменную, хранящую результат работы функции mysql_connect():
Функция mysql_connect( ) требует указания имени сервера (хоста), имени пользователя
и пароля (в перечисленном порядке).
Добавьте функцию die( ) в строку mysql_connect ( ) для прерывания сценария выдачи сообщения
в случае, если подключение к MySQL окончится неудачей:
Чтобы проверить значение переменной $connection, введите текст:
Если значение истинно, то подключение к MySQL было успешным и будет создана переменная,
хранящая сообщение об этом.
Закройте РНР-блок. Добавьте блок HTML:
Для вывода сообщения на экран, введите код РНР:
Завершите HTML-документ:
Сохраните созданный файл с именем db_connect.php в папке для документов ваше Web-сервера.
Запустите свой Web-браузер, в поле ввода Адрес: введите: http://localhost/db_connect.php и
нажмите клавишу Enter, в рабочем окне браузера появится страница Подключение к MySQL
(Рис. 7.1).
Рис. 7.1. Результат работы сценария db_connect.php
Если вы правильно ввели имя пользователя и пароль, то на странице Подключение к MySQL
будет выведено сообщение об успешном подключении к MySQL.
Прерывание сценария подключения
Иногда при работе с базами данных вы будете ошибаться. Это неизбежно. Вот почему мы хотим о
братить ваше внимание на несколько обычных ошибок и показать, как правильно их обработать.
Мы изменим сценарий db_connect.php так, чтобы вызвать неудачное подключение. Самое простое,
что для этого можно сделать - это изменить имя пользователя.
Измените в строке для подключения к базе данных имя пользователя на booboo (если, конечно,
пользователя с таким именем нет). Строка будет выглядеть следующим образом:
Сохраните изменения в файле.
Запустите свой Web-браузер, в поле ввода Адрес: введите http://localhost/db_connect.php и нажмите
клавишу Enter. B рабочем окне браузера появится страница с сообщением об ошибке подключения (Рис. 7.2).
Предупреждение, показанное на Рис. 11.8, содержит информацию как раз о том, что было неправильно:
MySQL Connection Failed: Access denied for user: 'booboo@localhost' (Соединение с MySQL
потерпело неудачу: Для пользователя: 'booboo@localhost' доступ отвергнут). После предупреждения
выводится сообщение Невозможно подключиться к MySQL функции die). Вы можете подавить вывод
предупреждения, оставив только сообщение
Рис. 7.2. Предупреждение и сообщение об ошибке подключения.
Добавьте символ @ перед именем функции mysql_connect (), не изменяя неправильного имени
пользователя. Строка, определяющая переменную $connection, должна выглядеть следующим образом:
Сохраните изменения в файле.
Запустите свой Web-браузер, в поле ввода Адрес: введите http://localhost/db_connect.php и
нажмите клавишу Enter. В рабочем окне браузера появится страница только с сообщением
об ошибке подключения Рис. 7.3.
Рис. 7.3. Страница с сообщением об ошибке подключения
Если вы сведете к минимуму возможность выдачи системных предупреждений и сообщений об ошибках
и постараетесь обработать большинство ошибочных ситуаций сами, то это сделает использование
вашей программы более приятным во время пиковой загрузки Web-сервера, когда база данных сама
генерирует сообщения об ошибках при не возможности обслужить запрос.
Список баз данных на сервере
Теперь, после того как вы успешно использовали РНР для подключения к MySQL, мы
перейдем к знакомству с некоторыми встроенными в РНР функциями, относящимися к MySQL.
В этом упражнении мы будем использовать следующие функции:
mysql_list_dbs ( ) - используется для получения списка баз данных на сервере MySQL;
mysql_num_rows ( ) - возвращает число строк в результате запроса;
mysql_tablename ( ) - вопреки своему имени, эта функция может извлечь имя таблицы или базы
данных из результата запроса.
Целью создаваемого в этом знакомстве сценария является получение списка всех баз данных
на локальном сервере MySQL.
Создайте с помощью текстового редактора новый файл.
Начните РНР-блок:
Создайте переменную для хранения результата функции mysql_connect ( ):
Для подавления предупреждений используется символ @, а функция die ( ) используется
для прерывания сценария и выдачи сообщения, если подключение к MySQL окончится неудачей.
Создайте переменную, хранящую результат функции mysql_list_dbs ( ):
Здесь также для подавления предупреждений используется символ @, а функция die ( )
используется для прерывания сценария и выдачи сообщения, если функция mysql_list_dbs ( )
не сможет получить список.
Функции mysgl_list_dbs ( ) требуется только один аргумент - идентификатор текущего соединения.
Мы создадим цикл, чтобы динамически заполнять маркированный список.
Начните формирование маркированного списка вне цикла
Создайте переменную счетчика для цикла:
Начните оператор цикла:
Цикл будет продолжаться, пока значение переменной $i меньше, чем число строк в значении
переменной $dbs.
Чтобы получить имя базы данных в текущей строке, введите:
Счет начинается с 0, а не с 1, поэтому 0 будет соответствовать первой строке результата функции
mysql_list_dbs ( ). По мере увеличения счетчика будет увеличиваться и номер строки.
Переменная $i заменяется своим значением, поэтому в первом цикле фактически будет выполняться
следующий код:
Добавьте текущее имя базы данных в маркированный список:
Увеличьте значение счетчика перед закрытием цикла:
Завершите цикл while:
Закройте маркированный список, закройте блок РНР: :
Введите HTML-код:
Выведите список:
Завершите HTML-блок:
Сохраните созданный файл с именем db_listdb.php в папке для документов вашего Web-сервера.
Созданный вами файл должен выглядеть, как показано на Рис.7.4.
Рис. 7.4. Сценарий db_listdb.php.
Запустите свой Web-браузер, в поле ввода Адрес: введите: http://localhost/db_listdb.php
и нажмите клавишу Enter, в рабочее окно браузера будет загружена страница Базы данных MySQL
(Рис. 7.5).
Рис. 7.5. Результат работы сценария db_listdb.php.
Если вы сами не добавляли и не удаляли базы данных, то вы должны увидеть на странице Базы данных
MySQL (Рис. 7.5) три базы данных. Две из них являются системными базами данных MySQL (mysql и
tempdata), а база данных testDB была создана нами во время установки и тестирования MySQL.
В следующем упражнении мы добавим к созданному в этом знакомстве сценарию другой цикл,
чтобы вывести на экран список таблиц внутри каждой базы данных.
Список таблиц в базе данных
Небольшое дополнение к сценарию db_listdb.php - это все что вам нужно, чтобы перечислить
еще и таблицы в каждой базе данных. Для этого будет использована только одна новая функция
mysql_list_tables(), которая позволяет получить список таблиц, содержащихся в базе данных.
Цель создаваемого сценария получить список всех пользовательских баз данных на локальном сервере
MySQL, включая содержащиеся внутри них таблицы.
Создайте с помощью текстового редактора новый файл.
Начните РНР-блок, создайте переменную для хранения результата функции mysql_connect ():
Для подавления предупреждений используется символ @, а функция die () используется для
прерывания сценария и выдачи сообщения, если подключение к MySQL окончится неудачей.
Создайте переменную, хранящую результат функции mysql_list_dbs ( ):
Здесь также для подавления предупреждений используется символ @, а функция die() используется
для прерывания сценария и выдачи сообщения, если функция mysql_list_dbs () не сможет получить список.
Функции mysql_list_dbs () требуется только один аргумент - идентификатор текущего соединения.
Создим цикл, чтобы динамически заполнять маркированный список.
Начните формирование маркированного списка вне цикла:
Создайте переменную счетчика для цикла:
Здесь используется переменная $db_num в качестве счетчика, а не $i, как в предыдущем
сценарии, так как в этом сценарии нам потребуется одновременно два счетчика.
Начните оператор цикла:
Цикл будет продолжаться, пока значение переменной $db_num меньше, чем число строк в значении
переменной $dbs.
Чтобы получить имя базы данных в текущей строке, введите:
Добавьте текущее имя базы данных в маркированный список:
Начните оператор if. . .else, который проверяет, не является ли имя текущей базы данных
именем системной базы данных mysql или tempdata:
Только пользователь root имеет доступ к таблицам, находящимся внутри баз данных mysql и tempdata.
Попытка получить список таблиц этих баз данных будет автоматически восприниматься как ошибка.
Создайте переменную, хранящую результат функции mysql_list_tables ():
Для подавления предупреждений используется символ @, а функция die () используется для
прерывания сценария и выдачи сообщения, если функция mysql_list_tables () не сможет
получить список таблиц.
Функции mysqi_list_tabies () требуется только один аргумент - имя текущей базы данных.
Создадим внутренний цикл, чтобы динамически заполнять маркированный список таблиц в
текущей базе данных.
Начните формирование маркированного списка вне цикла:
Создайте переменную счетчика для внутреннего цикла:
Начните оператор цикла:
Цикл будет продолжаться, пока значение переменной $table_num меньше, чем числ строк в
значении переменной $tables.
Чтобы получить имя таблицы в текущей строке, введите:
Добавьте текущее имя таблицы в маркированный список:
Увеличьте значение счетчика перед закрытием цикла:
Закройте внутренний цикл, закройте маркированный список имен таблиц:
Закройте оператор if ...else. Чтобы добавить переменную $table_list к переменной
$db_list, а затем увеличить на единицу счетчик внешнего цикла, введите строки:
Закройте внешний цикл, закройте маркированный список баз данных:
Закройте PHP-блок:
Добавьте блок HTML:
Выведите список на экран, введите текст:
Завершите HTML-блок:
Сохраните созданный файл с именем db_listtables.php в папке для документов вашего Web-сервера.
Запустите свой Web-браузер, в поле ввода Адрес: введите http://localhost/db_listtables.php
и нажмите клавишу Enter в рабочее окно браузера будет загружена страница Таблицы
MySQL (Рис. 7.6).
Рис. 7.6. Результат работы сценария db_listtables.php.
Если вы сами не изменяли состав таблиц в базе данны testDB, то вы должны увидеть на
странице Таблицы MySQL (Рис. 7.6) одну таблицу (test-table),перечисленную под базой данных testDB.
В следующем упражнении мы будем создавать новую базу данных на вашем сервере.
Создание новой базы данных
Сложные элементы предыдущего сценария не используются в сценарии, который мы будем
создавать в этом упражнении.
Цель сценария - создать новую базу данных на сервере MySQL.
Создайте с помощью текстового редактора новый файл.
Начните РНР-блок. Создайте переменную для хранения имени новой базы данных:
Создайте переменную для хранения результата функции mysql_connect ():
Для подавления предупреждений используется символ @, а функция die () используется
для прерывания сценария и выдачи сообщения, если подключение к MySQL окончится неудачей.
Создайте переменную для хранения результата функции mysql_create_db ():
Для подавления предупреждений используется символ @, а функция die () используется для прерывания сценария
и выдачи сообщения, если создание базы данных окончится неудачей.
Функция mysql_create_db() требует указания двух аргументов: имени создаваемой базы данных
и идентификатора текущего соединения.
Чтобы проверить значение переменной $result, введите оператор if. . .else:
Если значение $result - истина, то будет создана переменная для хранения сообщения об успешном
создании базы данных.
Если база данных не была создана, то сценарий будет прерван предыдущей функцией die ().
Закройте PHP-блок:
Добавьте блок HTML:
Выведите на экран сообщение:
Завершите блок HTML:
Сохраните созданный файл с именем db_createdb.php в папке для документов вашего Web-сервера.
Запустите свой Web-браузер, в поле ввода Адрес: введите http://localhost/db_createdb.php и
нажмите клавишу Enter. В рабочее окно браузера будет загpужена страница Создание новой
базы данных (Рис. 7.7).
Рис. 7.7. Результат работы сценария db_createdb.php.
Если база данных создана, то будет выведено сообщение о создании базы данных (Рис.7.7).
Если перезапустить сценарий повторно, то это вызовет прерывание сценария, так как база данных с
именем testDB2 уже создана. Проверим это.
В поле ввода Адрес: браузера введите http://localhost/db_createdb.php нажмите клавишу
Enter или нажмите кнопку Обновить, расположенную на панели инструментов. В рабочее окно
браузера будет загружена страница с сообщением о невозможности создать базу данных (Рис. 7.8)
Рис. 7.8. Сообщение о невозможности создать базу данных.
Чтобы убедиться, что база данных была действительно создана, выполните следующее:
Введите в поле ввода Адрес: браузера http://localhost/db_listdb.php и на жмите клавишу
Enter. В рабочее окно браузера будет загружена страница Базы данных MySQL с именем вновь
созданной базы данных в списке (Рис. 7.9).
Рис. 7.9. Страница Базы данных MySQL с именем вновь созданной базы данных
В следующем упражнении мы создадим сценарий,который удалит только что созданную базу данных.
Удаление баз данных
Цель сценария, который мы создадим в этом знакомстве, удалить базу данных testDB2 с сервера MySQL.
Создайте с помощью текстового редактора новый файл.
Начните РНР-блок:
Создайте переменную для хранения имени удаляемой базы данных:
Создайте переменную для хранения результата функции mysql_connect ( ):
Для подавления предупреждений используется символ @, а функция die( ) используется для
прерывания сценария и выдачи сообщения, если подключение к MySQL окончится неудачей.
Создайте переменную для хранения результата функции mysql_drop_db ():
Для подавления предупреждений используется символ @, а функция die ( ) используется для прерывания
сценария и выдачи сообщения, если создание базы данных окончится неудачей.
Функция mysgl_drop_db( ) требует указания двух аргументов: имени удаляемой базы данных
и идентификатора текущего соединения.
Чтобы проверить значение переменной $RESULT, введите оператор if. . .else:
Если значение $result - истина, то будет создана переменная для хранения сообщения об
успешном удалении базы данных.
Если база данных не была удалена, то сценарий будет прерван предыдущей функцией die ().
Закройте РНР-блок:
Добавьте блок HTML:
Чтобы вывести на экран сообщение, введите код РНР:
Завершите HTML-блок:
Сохраните созданный файл с именем db_dropdb.db в папке для документов вашего Web-сервера.
Запустите свой Web-браузер, в поле ввода Адрес: введите http://localhost/db_dropdb.db
и нажмите клавишу Enter. в рабочее окно браузера будет загружена страница
Удаление базы данных (Рис. 7.10).
Рис. 7.10. Результат работы сценария db_dropdb.db
Если база данных удалена, то будет выведено сообщение об удалении базы данных (Рис. 7.10).
Если перезапустить сценарий повторно, то это вызовет прерывание сценария, так как базы
данных с именем testDB2 уже не существует. Проверим это.
В поле ввода Адрес: браузера введите httр://localhost/db_dropdb.php и намите клавишу
Enter нажмите кнопку Обновить, расположенную на панели инструментов браузера. В рабочее
окно браузера будет загружена страница с сообщением о невозможности удалить базу данных
(Рис. 7.11).
7.11. Сообщение о невозможности удалить базу данных
|