А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я
0-9 A B C D I F G H IJ K L M N O P Q R S TU V WX Y Z #


Чтение книги "MySQL 5.0. Библиотека программиста" (страница 21)

   Итоги

   В разделе 4.1 «Интерфейс с PHP» вы познакомились с примерами PHP-приложений, использующих базу данных MySQL. Все они имеют сходную структуру:
   • подключение к серверу MySQL;
   • выбор базы данных;
   • установка кодировки;
   • выполнение SQL-команды (ввод, изменение или получение данных);
   • обработка ошибки.
   При этом мы рассмотрели только самые необходимые для взаимодействия с MySQL функции языка PHP. Полный список этих функций вы можете найти в Руководстве по PHP на странице http://www.php.net/manual/ru/ref.mysql.php.
   В следующем разделе мы поговорим о том, как взаимодействуют с базой данных веб-приложения на языке Perl.

   4.2. Интерфейс с Perl

   В этом разделе мы рассмотрим процесс создания веб-приложения на языке Perl, выполняющего получение информации из базы данных и запись ее в базу.
   Выбор платформы для развертывания Perl-приложения аналогичен выбору платформы для PHP-приложения: вы можете воспользоваться хостингом с поддержкой Perl и MySQL либо установить на своем компьютере веб-сервер Apache и интерпретатор языка Perl. При этом все замечания и рекомендации из подраздела «Выбор платформы» остаются в силе.
   В последующих примерах мы будем использовать пакет XAMPP, установку которого мы описывали в подразделе «Установка пакета XAMPP». Кроме того, нам потребуются дополнительные модули Perl DBI (Database Interface – интерфейс к базе данных) и Perl CGI (Common Gateway Interface – стандартный интерфейс между сценарием и веб-сервером). Об их установке вы узнаете из следующего подраздела.

   Установка дополнительных модулей Perl

   Чтобы установить модули Perl DBI и Perl CGI, выполните следующие действия.
   1. Скачайте дистрибутив пакета Perl Add-Ons. Для этого на веб-странице http://www.apachefriends.org/en/xampp-windows.html найдите раздел XAMPP for Windows Add-Ons и в подразделе Perl щелкните на ссылке Installer.
   2. После загрузки файла xampp-win32-perl-addon-xxx-xxx-installer. exe запустите его, дважды щелкнув на его значке.
   3. Выберите язык установки Russian (рис. 4.15) и нажмите кнопку OK.
   Рис. 4.15. Выбор языка установки

   4. В начальном окне мастера установки (рис. 4.16) нажмите кнопку Далее.
   Рис. 4.16. Начальное окно мастера установки

   5. В окне выбора папки установки (рис. 4.17) по умолчанию предлагается корневая папка XAMPP. Ничего не меняя, нажмите кнопку Далее.
   Рис. 4.17. Выбор папки установки

   6. После окончания установки нажмите кнопку Готово (рис. 4.18).
   Рис. 4.18. Завершение установки

   Итак, дополнительные модули Perl установлены. Теперь мы можем приступить к созданию приложений Perl.

   Тестирование Perl

   Чтобы проверить корректность функционирования интерпретатора Perl, создайте простейшее Perl-приложение. Для этого выполните следующие действия.
   1. Запустите стандартную программу Windows Блокнот (Пуск → Все программы → Стандартные → Блокнот).
   2. В окне программы Блокнот введите следующий код (рис. 4.19):

   #!»C:Program Filesxamppperlbinperl.exe»
   print «Content-type: text/html; charset=windows-1251nn»;
   print “Работа с MySQL”;
   Рис. 4.19. Простейшее Perl-приложение

...
   Внимание!
   В первой строке любого сценария Perl после символов #! необходимо указать путь к интерпретатору Perl: «<Путь к корневой папке XAMPP>perlbinperl.exe». Вывод текста или HTML-кода нужно предварять строкой print «Content-type: text/html; charsert = windows-1251nn»;, которая указывает тип выводимой информации.
   3. Для сохранения файла нажмите комбинацию клавиш Ctrl+S. В стандартном окне Windows Сохранить как откройте корневую папку XAMPP, а в ней – папку cgi-bin. Введите имя файла: test.pl и нажмите кнопку Сохранить.
   4. Запустите Internet Explorer (Пуск → Все программы → Internet Explorer) или любой другой браузер. В адресной строке браузера введите следующий адрес: http:// localhost/cgi-bin/test.pl. Появление текста «Работа с MySQL» (рис. 4.20) на вебстранице означает, что Perl-приложения выполняются нормально.
   Рис. 4.20. Результат выполнения приложения

   Аналогичная последовательность действий используется для создания всех последующих сценариев Perl в данном разделе. Приступим к разработке приложения, взаимодействующего с базой данных MySQL.

   Подключение к базе данных

   Прежде чем использовать команду подключения к базе данных MySQL, укажем интерпретатору Perl, что необходимо использовать модуль Perl DBI. Для этого включим в сценарий команду

   use DBI;

   Для подключения к базе данных используется метод

   connect(«DBI:mysql:database=<Имя базы данных>;host=<Имя
   хоста>[;port=<Номер порта>]»,»Имя
   пользователя»,»Пароль»[,<Режим обработки ошибок>]);

   Метод connect() создает соединение с базой данных и возвращает дескриптор соединения – указатель на объект, отвечающий за взаимодействие с базой данных и реализующий все методы работы с БД. Если установить соединение не удалось, метод connect() возвращает значение undef.
...
   Примечание
   Необязательный параметр port по умолчанию принимает значение 3306. Режим обработки ошибок мы обсудим в подразделе «Обработка ошибок».
   Например, вызов метода my $dbh = DBI —»

   my $dbh = DBI ->
   connect(«DBI:mysql:database=SalesDept;host=localhost»,
   “username”,”userpassword”);

   осуществляет подключение к серверу MySQL, работающему на локальном компьютере, используя имя пользователя username и пароль userpassword. При этом база данных SalesDept выбирается в качестве текущей. Дескриптор соединения сохраняется в переменной $dbh.
...
   Совет
   В целях защиты от несанкционированного доступа рекомендуется подключаться к базе данных не от имени пользователя root, а от имени специально созданного пользователя с минимально необходимыми правами доступа. О регистрации пользователей и настройке прав далее будет рассказано подробно.
   После окончания работы с базой данных отключимся от нее с помощью метода disconnect();
   Рассмотрим пример приложения, которое подключается к базе данных и выводит диагностическое сообщение. Создайте в папке cgi-bin корневой папки XAMPP файл connect.pl и введите в него код, представленный в листинге 4.10.
Листинг 4.10. Подключение к базе данных
   #!»C:Program Filesxamppperlbinperl.exe»
   print «Content-type: text/html; charset=windows-1251nn»;
   #Подключаем модуль DBI
   use DBI;
   #Подсоединяемся к базе данных
   my $dbh = DBI -> connect(“DBI:mysql:database=SalesDept;host=localhost”,
   “username”,”userpassword”);
   if(!$dbh)
   {
   print(“Ошибка доступа к базе данных. Приносим свои извинения”);
   }
   else
   {
   print “Подключение выполнено успешно”;
   }
   #Отсоединяемся от базы данных
   $dbh->disconnect();

   Сохраните файл connect.pl, а затем наберите в адресной строке браузера адрес http://localhost/cgi-bin/connect.pl. При успешном подключении на веб-странице появится соответствующее сообщение (рис. 4.21).
   Рис. 4.21. Результат подключения к базе данных

   После подключения к серверу MySQL вы можете получать данные из базы и записывать их в базу. В следующем подразделе вы узнаете о сохранении данных.

   Ввод данных в базу

   В этом подразделе приводятся сведения о том, как создать приложение, которое записывает в базу введенные пользователем данные. Вначале рассмотрим метод, позволяющий выполнить SQL-команду, не предполагающую получения данных из базы (например, INSERT, UPDATE или DELETE):

   do(«<Текст команды>»[,
   <Неиспользуемый параметр>,<Привязываемые параметры>])

   Метод do() возвращает количество строк, с которыми была выполнена операция, значение -1, если количество строк неизвестно, и значение undef в случае ошибки.
...
   Примечание
   Если SQL-команда была выполнена успешно, но не произвела действий с одной строкой, то метод do() возвращает значение E0E, которое рассматривается как числовое значение 0 и как логическое значение TRUE.
   Единственным обязательным параметром метода do() является текст SQL-команды, которую необходимо выполнить. Например, установить кодировку можно следующим образом:

   $dbh -> do(«SET NAMES cp1251»);

...
   Совет
   Установка кодировки перед началом работы с данными позволяет избежать некорректного отображения и сохранения в базе данных символов русского алфавита. Была выбрана кодировка Windows (CP-1251), так как именно в ней был создан сценарий input.pl.
   Привязка параметров используется в случае, когда необходимо выполнить динамическую SQL-команду, содержащую переменные величины. В тексте команды эти величины нужно заменить символами? а их значения передать в качестве параметров метода do(). Например, пусть имя, телефон и адрес клиента хранятся, соответственно, в переменных $name, $phone и $address. Записать эти данные в базу можно с помощью вызова метода

   $dbh – > do(«INSERT INTO Customers (name,phone,address)
   VALUES (?,?,?)»,
   undef,$name,$phone,$address);

   Перед выполнением SQL-команды INSERT вместо знаков вопроса будут подставлены значения переменных $name, $phone и $address (неиспользуемому параметру было присвоено значение undef). При этом интерпретатор Perl автоматически вставляет кавычки там, где это необходимо, экранирует спецсимволы и т. п.
   В качестве примера использования метода do() рассмотрим форму саморегистрации нового клиента, в которой клиент может ввести свое имя, телефон и адрес. Помимо метода do(), для создания такого приложения нам потребуется дополнительный модуль Perl CGI и функция param(), которая возвращает список значений, введенных пользователем в поля формы. Функция param() позволяет объединить вывод формы и обработку введенных данных в одном сценарии: если функция вернула непустое значение, значит, нужно обработать введенные пользователем данные, а если пустое – отобразить форму для ввода данных. Если же в качестве аргумента функции param() указывается имя поля формы, то функция вернет значение из этого поля.
   Итак, в папке cgi-bin корневой папки XAMPP создайте файл input.pl, содержащий код, представленный в листинге 4.11.
Листинг 4.11. Ввод данных
   #!”C:Program Filesxamppperlbinperl.exe”
   print “Content-type: text/html; charset=windows-1251nn”;
   #Подключаем модуль DBI
   use DBI;
   #Подключаем модуль CGI
   use CGI ':all';
   #Если список значений формы пуст, выводим форму
   if(!param())
   {
   print «
   <html>
   <head>
   <title>Работа с MySQL</title>
   </head>
   <body>
   <h1>Пожалуйста, заполните следующие поля:</h1>
   <!– Создаем форму для ввода данных –>
   <!– Обрабатывать введенные данные будет этот же сценарий – input.pl –>
   <form method='post' action='input.pl'>
   <table>
   <!– Создаем поле для ввода имени заказчика –>
   <tr>
   <td>Ваше имя:</td>
   <td><input type='text' name='CustomerName' value=''></td>
   </tr>
   <!– Создаем поле для ввода телефона заказчика –>
   <tr>
   <td>Телефон:</td>
   <td><input type='text' name='CustomerPhone' value='(495)'></td>
   </tr>
   <!– Создаем поле для ввода адреса заказчика –>
   <tr>
   <td>Адрес:</td>
   <td><input type='text' name='CustomerAddress' value=''></td>
   </tr>
   </table>
   <br>
   <!– Создаем кнопку для подтверждения данных –>
   <input type='submit' value='Отправить'>
   </form>
   </body>
   </html>”;
   }
   #Если список значений формы непуст, сохраняем эти значения
   else
   {
   #Подсоединяемся к базе данных
   my $dbh = DBI ->
   connect(«DBI:mysql:database=SalesDept;host=localhost»,
   «username»,»userpassword»);
   if (!$dbh)
   {
   print «Ошибка доступа к базе данных. Приносим свои извинения”;
   die();
   }
   #Устанавливаем кодировку CP-1251
   $dbh->do(«SET NAMES cp1251»);
   #Записываем данные о клиенте в таблицу Customers (Клиенты)
   #param('CustomerName'), param('CustomerPhone') и param('CustomerAddress') –
   #значения, полученные из полей формы с именами
   #CustomerName, CustomerPhone и CustomerAddress
   my $insert = $dbh -> do(«INSERT INTO Customers (name,phone,address)
   values (?, ?, ?)»,
   undef,
   param('CustomerName'), param('CustomerPhone'), param('CustomerAddress'));
   if(!$insert)
   {
   print “Ошибка доступа к базе данных. Приносим свои извинения”;
   die();
   }
   #Отсоединяемся от базы данных
   $dbh->disconnect();
   #Выводим итоговое сообщение
   print «<html>
   <head>
   <title>Работа с MySQL</title>
   </head>
   <body>
   <h3>Поздравляем! Регистрация завершена успешно</h3>
   </body>
   </html>”;
   }

   Для запуска этого приложения наберите в адресной строке браузера адрес http://localhost/cgi-bin/input.pl. На экране появится веб-форма (рис. 4.22).
   Рис. 4.22. Форма ввода данных

   Введите в поля формы какие-либо значения и нажмите кнопку Отправить. Для обработки введенных данных вызовется тот же самый сценарий input.pl, однако на этот раз будет выполнена вторая часть сценария, следующая после ключевого слова else (см. листинг 4.11). Эта часть сценария выполняет SQL-команду INSERT. Если команда была выполнена успешно, вы увидите на странице следующее сообщение (рис. 4.23).
   Рис. 4.23. Результат сохранения данных

   Если же при подключении к базе данных или при выполнении SQL-команды произошла ошибка, вы увидите на странице сообщение «Ошибка доступа к базе данных. Приносим свои извинения». Чтобы получить подробную информацию об ошибке, откройте корневую папку XAMPP, в ней – папку apache, затем папку logs. В папке logs откройте с помощью программы Блокнот файл error.log. В одной из последних строк этого файла вы найдете описание ошибки.
   Если же вы используете Perl-хостинг и не имеете доступа к журналу ошибок, то в обработке ошибок вам поможет следующий подраздел.
Чтение онлайн



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 29 30 31

Навигация по сайту


Читательские рекомендации

Информация