2014-05-15 3 views
4

My Perl 스크립트가 내 쿼리의 결과를 인쇄합니다. 그러나 그 순간에 나는 오류 받고 있어요 :Perl 스크립트에서 MySQL 쿼리 결과 표시

Can't locate object method "fetchrow_array" via package "SELECT * FROM SERVER" (perhaps you forgot to load "SELECT * FROM SERVER"?) at updateDB.pl line 32

내가 문제를 해결하기 쉬운 하나의 상상 ...하지만 내 펄/MySQL의 기술이 요구 될 많이 있습니다. 내 스크립트는 다음과 같습니다.

#!/usr/bin/perl 

use DBI; 
use DBD::mysql; 

use strict; 
use warnings; 

MySQL("SELECT * FROM SERVER"); 

# define subroutine to submit MySQL command 
sub MySQL 
{ 
    # establish connection with 'serverDNA' database 
    my $connection = DBI->connect("DBI:mysql:database=serverDNA;host=localhost"); 

    my $query = $_[0]; #assign argument to string 

    my $statement = $connection->prepare($query); #prepare query 

    $statement->execute(); #execute query 

    #loop to print MySQL results 
    while (my @row = $query->fetchrow_array) 
    { 
      print "@row\n"; 
    } 
} 

감사합니다.

+5

은 $ 명령문 -에 $ 질의 -> fetchrow_array을 변경 시도> fetchrow_array –

+1

DBI로 작업 할 때 고려해야 할 몇 가지가 있습니다. 이 경우 DBD를'사용 '할 필요는 없으며 DBI가 자동으로 DBD를로드합니다. DBI 의사는 연결 핸들러의 이름을 $ dbh로 지정하고 명령문 핸들러를 $ sth로 지정하는 것이 가장 좋습니다. DBI 문서에서 '가져 오기'의 다른 유형과'준비 '가 무엇인지에 관해 읽어 보시기 바랍니다. :) – simbabque

답변

5

쿼리 문자열에 fetchrow_array이 호출됩니다. 당신은 성명서에서 그것을 부르고 싶습니다.

while (my @row = $statement->fetchrow_array) 
{ 
    print "@row\n"; 
}