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

PerlからDB接続し、データ登録時のエラー処理について

DBにデータを登録するときにエラー処理を加えたいと思っていますが、
色んなサイトを参考にさせて頂いて、下記のようにしてみたのですが
うまくできません。

$sth = $db->prepare("
INSERT INTO DBNAME (hinmei,su,tani,tuikabi)
VALUES($hinmei,$su,$tani,$hiduke)
");

if(!$sth->execute){
 print "接続エラー";
 exit;
}


または、

$sth = $db->prepare("
INSERT INTO DBNAME (hinmei,su,tani,tuikabi)
VALUES($hinmei,$su,$tani,$hiduke)
");

$sth->execute or &error('DBに登録出来ません');



両方とも登録出来なければエラーメッセージを出すように
してみたのですが、キー項目が同じものを登録しようとすると

$sth->execute

この部分でとまってしまうらしく、次の処理に行きません。

もちろん、キー項目が同じでなければDBに登録出来ます。

どうすればエラー処理の設定ができるでしょうか。


教えてください。

お願いします。

A 回答 (1件)

evalで囲んだらいかがでしょうか?



例えば、
eval{
  $sth = $db->prepare("SQL文");
  $rv = $sth->execute() || die;
};
if( $@ ){
  #エラー処理
}
#行頭に全角スペース入っています
    • good
    • 0
この回答へのお礼

diszoさん


回答ありがとうございました。
お礼が遅くなって申しわけありません。

データベースとの接続の部分で、

$db = DBI->connect('DBI:mysql:database=***;host=***','***','***',{ RaiseError => 0, AutoCommit => 0 });

RaiseError => 1

にしていたのですが

RaiseError => 0

にすることで勝手に接続終了しないようになりました。

ここの設定の問題だったみたいです。
ありがとうございました。

お礼日時:2010/05/20 11:46

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