данных
Если же при подключении к базе данных или при выполнении SQL-команды произошла ошибка, вы увидите на странице сообщение «Ошибка доступа к базе данных. Приносим свои извинения». Чтобы получить подробную информацию об ошибке, откройте корневую папку XAMPP, в ней – папку apache, затем папку logs. В папке logs откройте с помощью программы Блокнот файл error.log. В одной из последних строк этого файла вы найдете описание ошибки.
Если же вы используете Perl-хостинг и не имеете доступа к журналу ошибок, то в обработке ошибок вам поможет следующий подраздел.
Обработка ошибок
Вы уже знаете, что при подключении к базе данных можно задать режим обработки ошибок. Режим определяется двумя параметрами:
• PrintError. Если этому параметру присвоено значение 1, то при возникновении ошибки выводится сообщение об ошибке;
• RaiseError. Если этому параметру присвоено значение 1, то при возникновении ошибки выводится сообщение об ошибке и сценарий завершает работу.
Чтобы реализовать собственный алгоритм обработки ошибок, отключите системную обработку ошибок, присвоив обоим параметрам значение 0, например:Для получения информации о возникшей ошибке предназначены методы
и
Метод errstr() возвращает описание ошибки, произошедшей при выполнении последней SQL-команды, или значение undef, если команда была выполнена успешно. Метод mysql_errno() возвращает код ошибки, произошедшей при выполнении последней SQL-команды, или undef, если команда была выполнена успешно.
Значения, возвращаемые методами errstr() и err(), не рекомендуется отображать на веб-странице, чтобы не раскрывать информацию об архитектуре приложения. Вместо этого вы можете записывать сведения об ошибке в файл или отсылать по электронной почте разработчику или администратору приложения.
Приведу пример обработки возникшей ошибки – запись ошибки в файл:Если при подключении к базе данных произойдет ошибка, в файл mysqlerror. log, находящийся в папке cgi-bin, будет записано сообщение, содержащее дату и время, номер и описание ошибки. Например, если база данных SalesDept (Отдел продаж) была удалена, в файле появится запись вида Sat Jun 28 11:15:00 2008 1049 Unknown database 'salesdept'.
Далее вы узнаете о том, каким образом приложение Perl работает с данными, полученными из БД с помощью запроса.
Выполнение запроса к базе данных
Для поиска информации в базе данных необходимо последовательно вызвать методыи
Метод prepare() обеспечивает подготовку запроса для последующего выполнения и возвращает
В переменной $query хранится дескриптор команды.
Примечание
Если требуется выполнить динамический запрос, содержащий переменные величины, вы можете воспользоваться привязкой параметров, о которой было сказано в подразделе «Ввод данных в базу». А именно, в тексте команды эти величины нужно заменить символами? а их значения передать в качестве параметров метода execute(). Например, получить список товаров, цена которых не превосходит значения переменной $max_price, можно следующим образом:
Для получения доступа к значениям в результате запроса вы можете использовать метод
или
Метод fetchrow_hashref() получает очередную строку из результата запроса, преобразует ее в ассоциативный массив (хеш) и возвращает ссылку на этот массив. Вы можете указать в качестве аргумента значение NAME_uc или NAME_lc, чтобы привести имена столбцов к верхнему или, соответственно, нижнему регистру. После обработки результатов запроса освободить память, занятую под массив полученных запросом данных, можно с помощью метода
Рассмотрим работу с запросом на примере вывода списка товаров, то есть данных из таблицы Products (Товары). Создайте в папке cgi-bin корневой папки XAMPP файл input.pl, содержащий код, представленный в листинге 4.12. Листинг 4.12. Получение информации и отображение ее на странице