2012-06-19 84 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 '的空间。