Виктор Гольцман - MySQL 5.0. Библиотека программиста
- Название:MySQL 5.0. Библиотека программиста
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Виктор Гольцман - MySQL 5.0. Библиотека программиста краткое содержание
Эта книга предназначена для всех, кто желает освоить СУБД MySQL. Для ее чтения вам не нужны никакие специальные знания – достаточно быть пользователем Windows. Вы узнаете, как установить и запустить MySQL, как создать собственную базу данных, как работать с данными при помощи команд SQL, как администрировать базу данных и оптимизировать ее работу. Разработчики веб-приложений на языках PHP, Perl и Java найдут в этой книге полезные сведения по использованию базы данных MySQL в соответствующих приложениях. Для всех операций, которые вам предстоит выполнить, приводятся подробные пошаговые инструкции, все основные действия поясняются на примере учебной базы данных.
MySQL 5.0. Библиотека программиста - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
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 Files\xampp\perl\bin\perl.exe»
print «Content-type: text/html; charset=windows-1251\n\n»;
#Подключаем модуль 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 Files\xampp\perl\bin\perl.exe”
print “Content-type: text/html; charset=windows-1251\n\n”;
#Подключаем модуль DBI
use DBI;
#Подключаем модуль CGI
use CGI \':all\
#Если список значений формы пуст, выводим форму
if(!param())
{
print «
Пожалуйста, заполните следующие поля:
Ваше имя: | |
Телефон: | |
Адрес: |
}
#Если список значений формы непуст, сохраняем эти значения
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)
Читать дальшеИнтервал:
Закладка: