|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Artem Chuprina 2:5020/400 07 May 2001 12:18:36 To : Alex Shevchuk Subject : Re: Оцените правильность, плиз... -------------------------------------------------------------------------------- Здравствуй, Alex Shevchuk. В твоём письме от Sun, 06 May 2001 17:16:58 +0400 написано: AS> Hello All. AS> Сабж, собственно. Также интересует, как оно будет работать при одновременном AS> обращении нескольких человек. AS> _*/===/*_ _Hу, типа, начало файла_ *mysql.cgi* _*/===/*_ AS> #!/Perl/5.6.0/bin/MSWin32-x86/perl.exe -w AS> use CGI; AS> use CGI::Carp; AS> use DBI; AS> use strict; AS> my $query = new CGI; AS> my $database = "test"; AS> my $db_server = "localhost"; AS> my $user = "Alex"; AS> my $password = ""; AS> my $newname = ""; AS> my $newemail = ""; AS> my $dbh; AS> my $sth; AS> my $rc; AS> if ($query->param('action')) AS> { AS> &set_variables; Если придется работать под mod_perl или аналогом, будет больно. См. FAQ. AS> &db_connect; AS> &add_data; AS> &print_page_start; AS> &print_add_form; AS> &print_data; AS> &print_page_end; AS> &db_cleanup; AS> } AS> else AS> { AS> &db_connect; AS> &print_page_start; AS> &print_add_form; AS> &print_data; AS> &print_page_end; AS> &db_cleanup; AS> } AS> sub set_variables AS> { AS> $newname = $query->param('name'); AS> $newemail = $query->param('email'); AS> } AS> sub add_data AS> { AS> if (($newname ne '') && ($newemail ne '')) AS> { AS> $sth = $dbh->prepare("insert into table1 values (\"$newname\", AS> \"$newemail\");") Сюда тебе много радости насуют и будут правы. perldoc DBI на предмет placeholders. Да, ";" в текстах запросов везде лишняя. AS> or die "Couldn't prepare the query: ", $sth->errstr, "\n"; $sth->>execute or die "Couldn't execute select statement: ", $sth->errstr, AS> "\n"; AS> } AS> } AS> sub db_connect AS> { AS> $dbh = DBI->connect("DBI:mysql:$database:$db_server", $user, $password); Результат connect тоже надо проверять... AS> } AS> sub db_cleanup AS> { AS> $rc = $sth->finish; $sth->finish if defined $sth; AS> $rc = $dbh->disconnect; $dbh->disconnect if defined $dbh; А коды завершения можно и не получать. Ты их все равно игнорируешь. AS> } AS> while (@row = $sth->fetchrow_array) AS> { AS> ($name, $email) = @row; Это делается иначе. perldoc DBI на предмет bind_columns. AS> print "<tr><td>$name</td><td>$email</td></tr>\n"; AS> } AS> sub print_page_start AS> { AS> print $query->header(-type=>'text/html',-charset=>'WINDOWS-1251'); Я понимаю, что по стандарту оно case insensitive, но на предмет борьбы с кривыми браузерами рекомендуется все-таки писать windows-1251... Я, правда, сейчас уже не скажу, кто не мог воспринимать в верхнем регистре... -- Artem Chuprina E-mail: ran@ran.pp.ru Programmer FIDO: 2:5020/371.32 Memonet Ltd. Phone: +7-095-284-1356 --- ifmail v.2.15dev5 * Origin: NTV Internet (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/16483a8267f19.html, оценка из 5, голосов 10
|