Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
# нужно процитировать.
my ($first, $middle, $last, $ext) = (
$dbh->quote(param("first$i")),
$dbh->quote(param("middle$i")),
$dbh->quote(param("last$i")),
$dbh->quote(param("ext$i")) );
my $query = "insert into student (id, first, middle, last,
ext, subjects) VALUES ($sid, $first, $middle,
$last, $ext, ':$id:')";
$dbh->query($query); } }
И эта функция обращается к таблице student, а не subject. Из последовательности,
 определенной в таблице student, извлекаются ID для новых учащихся, затем 
учащиеся вводятся в таблицу с этими ID.
MysqIPerl
Монти Видениус, автор MySQL, написал также и интерфейс Perl к MySQL, Mysql.pm. 
Он основывался на модуле Msql.pm для mSQL, поэтому интерфейсы двух модулей 
почти идентичны. На практике мы недавно преобразовали целый сайт из mSQL в 
MySQL, выполнив команду «perl -e 's/^Msql/Mysql/>> *.cgi» в каждом каталоге, 
содержащем CGI. Это составило 95% всей работы. Разумеется, при этом вы не 
получаете преимуществ MySQL, но таким путем можно быстро и легко встать на путь 
использования MySQL. Mysql.pm входит составной частью в пакет 
msql-mysql-modules Йохена Видмана (Jochen Wiedmann).
Одним из самых больших различий между MySQL и mSQL является их работа с 
последовательностями. В mSQL последовательность определяется в таблице командой 
CREATE SEQUENCE on tablename . Значение последовательности можно получать после 
этого, как обычное поле таблицы командой SELECT _se.q from tablename . В MySQL 
к первичному ключу добавляется флаг AU-TO_INCREMENT . При попытке ввода null в 
это поле оно автоматически инкрементируется. Как MySQL, так и mSQL допускают в 
каждой таблице только одну последовательность. Подробное обсуждение 
последовательностей в MySQL и mSQL см. в главе 6 «Диалект SQL, используемый в 
MySQL и mSQL».
Чтобы показать некоторые функции Mysql.pm, вернемся к примеру с экзаменами. 
Разобравшись с subject.cgi, займемся таблицей сведений об учащихся. Ее 
структура такова:
CREATE TABLE student (
id INT NOT NULL auto_increment,
first VARCHAR(50),
middle VARCHAR(50),
last VARCHAR(50),
ext VARCHAR(50),
subjects VARCHAR(100),
age INT,
sex INT,
address BLOB,
city VARCHAR(50),
state VARCHAR(5),
zip VARCHAR(10),
phone VARCHAR(10),
PRIMARY KEY (id) 
)
В этой таблице находятся все данные, используемые программой subject, cgi, a 
также другие сведения, которые относятся к учащемуся. Программа student.cgi, 
работающая с этой таблицей, должна выполнять все те функции, которые программа 
subject.cgi выполняла в отношении таблицы subject.
Нельзя работать с базой данных mSQL через модуль Mysql.pm, как и с базой MySQL 
через Msql.pm. Программа stu-dent.cgi предполагает, что таблица предметов 
находится в базе данных MySQL. Аналогично, программа subject.cgi рассчитывает 
на mSQL-версию таблицы учащихся.
Чтобы продемонстрировать, как работает Mysql.pm, мы подробно изучим ту часть 
student.cgi, которая позволяет пользователю изменять сведения об учащемся. Так 
же как операция «add» (добавление) в примере для Msql.pm была разбита на четыре 
отдельные функции, операция «change» (изменение) разбита здесь на три отдельные 
функции.
Первая функция - изменения, выводит форму, позволяющую пользователю найти 
учащегося, данные о котором нужно изменить:
sub change {
print header, start_html('title'=>'Поиск учащегося для изменения денных'
'BGCOLOR'=>'white');
&print_form('search2', Поиск учащегося для изменения данных',1); 
print <
 
 

 
 
END_OF_HTML }
Форма, используемая для поиска учащегося с целью изменения, настолько сходна с 
формами для просмотра данных и для добавления, что во всех трех случаях 
используется одна функция, print_form , показанная ниже:
sub print_form {
 
<<-[Весь Текст]
Страница: из 157
 <<-