|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/64888257b11b.html, оценка из 5, голосов 10
|