ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:mami_try CGIによる、MySQLのデータの更新処理が出来きず困ってます。
困り度:
  • 困っています
最近、perlの勉強をはじめ、
勉強がてら、
ユーザ管理フォームを作りたく
CGIのソースを書いています。
データはMySQLに登録しています。

以下のプログラムを使用し、
データの更新をしたい際に、
更新作業を行うと、
エラーなどは出ず、

ソースにあるように、
「データを正常に更新しました」と表示されますが、

更新されたか?をMySQLで確認すると、
データが更新されておらず、
更新作業を行う前と何ら変わらない値が登録されています。

「update文」のあたりがおかしいのかな?と
感じたのですが、

どこが検討はずれなのか?が分からず、
前に進めないでいます。
アドバイスいただけると大変ありがたいです。
宜しくお願い致します。


ソースは以下の通りです。

=========================================
use CGI;
use DBI;

$form = CGI->new;

print "Content-type: text/html\n\n";
print "<html><body>\n";

# DBに接続
$db=DBI->connect("DBI:mysql:dbname","username","pwd",
{RaiseError => 0, PrintError => 1});
if(!$db){
print "失敗\n";
exit;
}

# UPDATE文作成
$sql = "update test20090702 set agent='$agent',attend='$attend',name='$name',sex='$sex',remarks='$remarks' where name='$name'";

# SQL実行
$sth = $db->prepare($sql);
if(!$sth->execute){
print "SQL-fail\n";
exit;
}

# ステートクリア
$sth->finish;

# DB切断
$db->disconnect;

print "データを正常に更新しました。\n";
print <<"HTML";
HTML

=========================================

■開発環境:Fedora9
■MySQL:mysql-5.0.77-1
質問投稿日時:09/07/02 21:56
質問番号:5093405
この質問に対する回答は締め切られました。

回答

良回答20pt

回答者:taloo print $sql, '<br>, $db->errstr;

くらいを書いておくと、何かわかるんじゃないでしょうか。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:09/07/03 00:11
回答番号:No.1
この回答へのお礼talooさん

アドバイスありがとうございます!
print $sqlで、
問題の所在が明確になり、
改善に前進できました!