我正在执行类似于以下的脚本,当操作失败时,该execute
函数返回一个未定义的值,因此我可以检测到它失败了,这很好。但是,我发现err()
并errstr
没有返回任何东西。我期望分别得到错误代码和错误消息。我做错了什么?感谢您提供任何信息。
use DBI;
$db="foobar";
$host="localhost";
$user="root";
$password="mypassword";
my $dbh = DBI->connect("DBI:mysql:database=$db:host=$host",
$user, $password) or die "Oops: $DBI::errstr\n";
my $sth = $dbh->prepare("invalid sql");
my $returnval = $sth->execute();
my $errcode = $sth->err();
my $errstring = $sth->errstr;
print "returnval=$returnval, errcode=$errcode, errstring=$errstring\n";
输出:
returnval=, errcode=, errstring=
我在 64 位 Windows 7 系统上使用 Strawberry Perl(32 位)。(我正在使用 32 位版本,因为我使用的另一个模块不适用于 64 位版本。)perl.exe --version
说:“这是为 MSWin32 构建的 perl 5,版本 16,subversion 3 (v5.16.3)- x86-多线程"