アプリ版:「スタンプのみでお礼する」機能のリリースについて

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で試しても同じ現象がでました。

考えられる原因、おもいあたる原因がありましたら、教えてください。
また、原因がわからなくても、回避できそうなやり方があれば教えてください。
よろしくお願いいたします。

A 回答 (1件)

>my $sth = $dbh->prepare("INSERT INTO テーブル名 ( `title`) VALUES ($TITLE);



そもそも文法的に間違っていますけどtypoですかね?
(ダブルクォーテーションやかっこが閉じてない)

$TITELを渡していますが、文字列なのでシングルクォーテーションで
くくる必要があるのでは?

この回答への補足

申し訳ありません、複数のデータを保存しているのですが、
ここに載せるソースに加工する際に焦って忘れてしまいました。
動かしているほうは、変数はダブルクォーテーションでくくり、かっこも閉じています。
データの保存のほうはしっかりと動いてます。

補足日時:2011/11/22 17:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!