2014-03-12 24 views
0

我已經看到很多關於此的文章,而且沒有人爲我工作。我有這樣的代碼 -標量的行數 - Perl

$var1->{reference} = sql_get_rows(); 


sub sql_get_rows(){ 
    etc 
    return ($sth->fetchall_arrayref()); 
}; 

我想要做的就是知道有多少行中的SQL語句被發現,並存儲在$ VAR1 - >引用衝(或者說更好的方式來解決這個問題。我所寫的內容$ VAR1 - >引用衝下面存儲

warn Dumper ($var1->{reference}); 

'$VAR1 = [ 
     [ 
     26412502, 
     'initial' 
     ], 
     [ 
     49246682, 
     'title' 
     ], 

注意,我知道如何用SQL語句來找到COUNT,那不是我想要知道什麼

感謝

回答

2

如果使用DBI,使用rows method

my $sth = $dbh->prepare(q{...}); 
$sth->execute(@bound_variables) or die $dbh->errstr; 

print "Rows = " . $sth->rows; 

由於@ThisSuitIsBlackNot指出,這可能無法正常工作,所以如果你拉的所有記錄,僅計算數據結構:

print "Rows = " . scalar @{$var1->{reference}}; 
+0

從你鏈接的文檔如下:「一般來說,只能在非'SELE'執行後才能依靠行計數(對於某些特定的操作,比如'UPDATE'和'DELETE'),或者在獲取' SELECT'語句。對於SELECT語句,通常不可能知道有多少行將被返回,除非全部讀取。一些驅動程序將返回迄今爲止應用程序已獲取的行數,但其他驅動程序可能會返回-1直到獲取所有行。 *因此,不建議使用'rows'方法或'$ DBI :: rows'與'SELECT'語句*「(強調增加) – ThisSuitIsBlackNot

+0

Perfect thanks!將在4分鐘內打勾! – Geo1986

+0

由於OP已經有一個arrayref與查詢的結果,爲什麼不只是'我的$行= @ $ arrayref'? – ThisSuitIsBlackNot