2012-06-19 57 views
2

我正在編寫一個perl腳本,它將訪問MySQL數據庫以確定工具是否已通過或失敗,並且當我嘗試對代碼執行fetchrow_array時出現錯誤。Perl DBI SQL字符串錯誤

基本上正在發生的事情是,我通過循環的測試列表,看看他們是否已經通過或失敗,因此該循環的樣子:

foreach my $test (@tests){ 
    $sth = $dbh_k->prepare("select fn_get_test_status(' $test ');"); 
    $sth->execute(); 

    my @data = $sth->fetchrow_array(); 
    print("$test\n"); 
    print("@data\n"); 

}

和函數返回的字符串「通過」或「失敗」,但我不知道如何拉出一個字符串,並將其納入我的Perl腳本。

我不斷收到錯誤使用未初始化的值在連接或字符串在xx線。

任何提示或想法?謝謝

編輯: 我可能有一個返回數組類型的數組,我該如何去檢查它的內容?

+0

我將fetchrow_array轉換爲fetch(),現在我正在拉數組,但無法用普通文本打印。 – NateSHolland

+0

'@ test'數組中有什麼樣的值? 'fn_get_test_status()'是一個自定義的mysql函數嗎?什麼是'$ fub'?試試['$ sth-> dump_results'](http://search.cpan.org/~timb/DBI-1.622/DBI.pm#dump_results) – simbabque

+0

每個@test值是一個帶有測試名稱的字符串。這是我構建的自定義SQL函數,它應該是print(「$ test \ n」);對不起,我會糾正它 – NateSHolland

回答

2

下面是我們在聊天想出解決辦法:

my $sth = $dbh_k->prepare("select fn_get_test_status(?);"); 
foreach my $test (@tests){ 
    $sth->execute($test); 

    my @data = $sth->fetchrow_array(); 
    printf "%s: %s\n", $test, @data; 
} 

主要問題是旁邊' $test '的空間。