- 締切済み
mysql perl 2回保存される。
perlとmysqlを使っています。 htmlのformタグからえたテキストをCGIに送って データベースに保存しているのですが、送信ボタンを押すと2回データベースに 保存されてしまいます。 同じデータがふたつ保存されるのではなく、 一つ目はすべてNULLのデータが保存され 二つ目にmformの内容が保存されます。 CGIのほうのSQL文はひとつしか書いていません。for文も使っていません。 <-----以下form部分のソースーーーーー> print "<form method=\"POST\" action=\"./CGI/save_DB.cgi\" name=\"saveform_2\"target=\"subwindow\" onSubmit=\"openwin();\">"; print "<div>タイトル:<input type=\"text\" name=\"TITLE\" autocomplete=off value='"; print "$TITLE\'></div>"; print "<input type=\"submit\" value=\"保存\">"; print "</form>"; <-----以下save_DB.cgi SQL実行部分のソースーーーーー> my $TITLE = $cgi->param('TITLE'); my $dbh = DBI->connect("DBI:mysql:host=${db_host};database=${db_name}", $db_user, $db_pass); my $sth = $dbh->prepare("INSERT INTO テーブル名 ( `title`) VALUES ($TITLE); my $rv = $sth->execute(); データベースへの接続などの問題はありません。 ブラウザはクロームですが、IEで試しても同じ現象がでました。 考えられる原因、おもいあたる原因がありましたら、教えてください。 また、原因がわからなくても、回避できそうなやり方があれば教えてください。 よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
>my $sth = $dbh->prepare("INSERT INTO テーブル名 ( `title`) VALUES ($TITLE); そもそも文法的に間違っていますけどtypoですかね? (ダブルクォーテーションやかっこが閉じてない) $TITELを渡していますが、文字列なのでシングルクォーテーションで くくる必要があるのでは?
補足
申し訳ありません、複数のデータを保存しているのですが、 ここに載せるソースに加工する際に焦って忘れてしまいました。 動かしているほうは、変数はダブルクォーテーションでくくり、かっこも閉じています。 データの保存のほうはしっかりと動いてます。