我在寫一個使用DBI連接到MySQL數據庫的Perl腳本。我正在嘗試fetch
一列,它是MySQL代碼中的乘法值SUM(amount, 365)
的工作方式,也是在Perl中,代碼適用於SUM(amount)
我的想法是,乘法運算出的是不同類型的值,我無法通讀我的方法。儘管如此,我對Perl仍然很陌生。MySQL多重輸出和Perl DBI
這裏是代碼
my ($sum, $sum365);
$sth = $dbh->prepare ("
SELECT SUM(amount), SUM(amount) * 365)
FROM spending
");
$sth->execute()
or die "cannot execute\n";
$sth->bind_col(1, \$sum);
$sth->bind_col(2, \$sum365);
while ($sth->fetch){
print "$sum\n";
print "$sum365\n";
}
另一種解決辦法我想到的,是有辦法有Perl讀取該值作爲數字?然後我可以創建另一個變量$sum365 = $sum * 365
。我也試過,但Perl並沒有將數值讀爲數值。
另外我知道Perl中有不同的方法從從數據庫array
,arrayref
等有沒有其他的方法,將工作,爲什麼?
我會建議打開[RAISEERROR]這將拋出一個錯誤,每DBI方法,而不是那些你記得檢查一下。 'DBI-> connect(...,{RaiseError => 1})'; – Schwern
哦,很好的建議,會給出具體的錯誤嗎?例如警告它會告訴我,在「準備」這一行有錯誤。 'RaiseError => 1'會給出確切的原因嗎?在這種情況下,沒有任何錯誤,只是給了我一個空白的輸出,這就是爲什麼我認爲Perl不能讀取輸出。我可以更多地閱讀它 – nzaleski
奇怪的是執行沒有死。 RaiseError會給出與[$ DBI :: errstr](https://metacpan.org/pod/DBI#errstr)相同的錯誤消息,這將是任何來自MySQL的錯誤消息。它應該像「準備失敗:靠近」)「'。 – Schwern