【发布时间】:2016-12-21 21:31:37
【问题描述】:
我有一个将value1、value2、value3 插入 Oracle 数据库的 Perl CGI 脚本
eval {
my $sth = $dbh->prepare(
"insert into $table (COLUMN1, COLUMN2, COLUMN3) VALUES ('$value1','$value2','$value3')"
);
if ( defined( $sth ) ) {
$sth->execute();
}
else {
die( "Sth not defined" );
}
};
print "Successfully inserted";
对于唯一的 value1、value2、value3,我插入这些值没有问题,但如果我尝试插入重复的值,我会得到
执行()时违反了唯一约束错误
在日志中。但是页面仍然显示成功插入。
所以我在想能不能得到
的返回码$sth->execute();
那么我可以使用该信息来显示它是否成功插入或显示遇到错误。
或者在插入重复数据时我可以使用其他方法来显示错误吗?
【问题讨论】:
-
请展示您如何打开/创建您的
$dbh,尤其是RaiseError和PrintError标志。取决于他们,execute or die可能会有所帮助。 -
@PerlDuck:
die在 Web 应用程序中几乎从来都不是正确的做法。不管发生什么,你都应该得到一个 HTML 页面。 -
@Borodin 是的,是的。但他在
eval这样做。我只是想给出一个想法在哪里应该发生错误处理。漂亮的帽子,顺便说一句。 :-) -
我的手机没有显示帽子,我的邻居正在听很吵很奇怪的音乐:-(
-
我的帽子周围我会戴上绿柳;在我的帽子周围,十二个月零一天;如果有人问我为什么穿它;都是为了远方的真爱。