我试图基本上用Perl搜索数据库来判断是否有一个具有特定ID的项目.此搜索不返回任何行,但也可以返回一行.
我有以下代码:
my $th = $dbh->prepare(qq{SELECT bi_exim_id FROM bounce_info WHERE bi_exim_id = '$exid'}); $th->execute(); if ($th->fetch()->[0] != $exid) { ...
基本上,这会尝试查看是否返回了ID,如果不是,则继续执行脚本.但是它会在这个$th->fetch()->[0]
东西上抛出Null数组引用错误.我怎么才能只是检查它是否返回行或现在?
该DBD :: mysql的驱动程序有一个的rows()
,可以返回结果的计数方法:
$sth = $dbh->prepare( ... ); $sth->execute; $rows = $sth->rows;
这是特定于数据库驱动程序的,因此它可能在其他驱动程序中不起作用,或者在其他驱动程序中可能有所不同.
my $th = $dbh->prepare(qq{SELECT bi_exim_id FROM bounce_info WHERE bi_exim_id = '$exid'}); $th->execute(); my $found = 0; while ($th->fetch()) { $found = 1; }
如果该行不存在,您的查询将不会返回任何内容,因此您无法取消引用该提取.
更新:你可能想重写那个
my $found = $th->fetch();