Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Konstantin Stupnik                   2:5020/400     01 Oct 2001  11:47:09
 To : Dugar Bayartuev
 Subject : Re: Вопрос знатокам Перла
 -------------------------------------------------------------------------------- 
 
 Hi!
 
 > Есть скрипт, который должен брать данные из формы и записывать их в БД
 
 MySQL. C
 
 > БД проблем нет - все работает. Также работает скрипт если его выполнять по
 > частям, но в совокупности он не пашет - тут наверное какая то мелочь...
 
 Посему
 
 > и в БД не заносятся данные.
 > Hиже исходники скрипта и файла шаблона:
 >
 >
 > ДДД=> Выдеpнул из Windows Clipboard <=ДДД
 >
 > #!/usr/bin/perl
 >
 > use CGI qw/:standart/;
 
 1) standarD<--
 
 > use DBI;
 >
 > $q = new CGI;
 
 2) А зачем standard, если ты таки объект используешь?
 > $path = "/home/mysql/cgi-bin/tpl";
 > $TPL_INSERT = "$path/pr-add-tpl.htm";
 > $cmd = $q->param("cmd");
 >
 >
 > if ($cmd ne "add") {
 >  &show_form ;
 > } else {
 >  $dbh = DBI->connect('dbi:mysql:db_website','root','');
 >  &add_pr;
 >
 >  dbh->disconnect;
 >
 > }
 >
 > sub add_pr {
 >  $title = $field{'pr_title'};
 
 Кто такой $field?
 Судя по всему это должен быть hash с полями формы.
 Таки надо: $title=$q->param('pr_title');
 
 >  $author = $field{'pr_author'};
 >  $body = $field{'pr_body'};
 >  $body =~ s/\r\n/<br>/g;
 >
 >  my($sql) = "INSERT INTO tbl_news_items
 > (col_title,col_author,col_body,col_date) VALUES
 > (\'$title\',\'$author\',\'$body\',CURDATE())";
 >  $rs = $dbh->do($sql);
 
 Мама мия.
 А если $title="'','','',CURDATE());drop table tbl_news;"
 my $sql='INSERT INTO .... VALUES (?,?,?,CURDATE())";
 
 $dbh->do($sql,undef,$title,$author,$body);
 
 Правда эта конструкция только с определённой версии DBI
 работает.
 Если не получится, то:
 my $sth=$dbh->prepare($sql);
 
 $sth->execute($title,$author,$body);
 >  if ($@) {
 
 Гм. А ты eval делал, что б $@ проверять?
 К тому же $dbh->do незачем оборачивать
 в eval, ибо он die не делает.
 my $rc=$dbh->do(...);
 if ($rc<=0 || $dbh->err)
 {
   #error handling here
 }
 
 >   $rc = $dbh->rollback;
 >  } else {
 >   $rc = $dbh->commit;
 >  }
 >
 >  print "Location: /cgi-bin/pr-list-dbi.pl\n\n";
 > }
 >
 
 --
 Best regards,
       Konstantin.
 нРОПЮБКЕМH ВЕПЕГ ЯЕПБЕП Talk.Ru - http://www.talk.ru
 --- ifmail v.2.15dev5
  * Origin: Talk.Ru (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Вопрос знатокам Перла   Dugar Bayartuev   29 Sep 2001 17:17:42 
 Вопрос знатокам Перла   Alexander Bolotnov   29 Sep 2001 23:48:11 
 Re: Вопрос знатокам Перла   Konstantin Stupnik   01 Oct 2001 11:47:09 
Архивное /ru.perl/64888257b11b.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional