Создание подключения и начало работы с 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. Сообщение о невозможности удалить базу данных


    Hosted by uCoz