2012-05-07 5 views
2

다음 코드를 Perl로 작성했습니다. 나는이 DBI/MySQL 쿼리에 대한 출력이 표시되지 않는 이유는 무엇입니까?

#!C:\perl64\bin\perl.exe -wT 
use strict; 
use warnings; 
use DBI; 
print "Content-type: text/html \n\n"; 

# MYSQL CONFIG VARIABLES 
my $driver  = "mysql"; 
my $database = "test555"; 
my $tablename3 = "test77"; 

my $user = "root"; 
my $pw = "root"; 

# PERL MYSQL CONNECT() 
my $dbh = DBI->connect("DBI:$driver:$database", $user, $pw,); 

my $sth = $dbh->prepare(" 
     SELECT * 
      FROM t6 
     WHERE paragraph='PWE1234' 
    "); 

$sth->execute(); 
#$dbh->disconnect; 
#exit 0; 

프로그램이 $dbh->disconnect에 도달 윈도우 7에 대한 ActivePerl의 5.14이 시스템은 오류를 던지고있다; 그러므로 그것을 주석 처리했다. 내가 그걸 주석으로 말할 때, 시스템은 어떤 에러도 던지지 않고 있지만 출력을 얻지 못한다.

이 쿼리에 대한 결과가 있으므로 MySQL을 사용하여 한 번만 확인했습니다.

+3

아무 것도 출력하지 않습니다. 왜 출력을 기대합니까? – Mat

+1

"시스템에서 오류가 발생했습니다."... 어떤 오류가 있습니까? – gpojd

+0

@gpojd, 오류가 발생했습니다. 문 핸들이 닫히지 않았습니다. Strict를 사용했기 때문에, 그것은 터져 나왔습니다. 그래서 데이터베이스 핸들을 닫기 전에 문 핸들에 finish 문을주었습니다. 이제 해결되었습니다! – Mannii88

답변

3

출력을 만들 코드가 없으므로 출력이 없습니다.

execute을 호출 한 후 fetchsomething methods 중 하나를 호출하고 다시 가져온 데이터 구조로 작업해야합니다.

+0

안녕하세요 @quentin, 실례를 찾을 수있는 예제 또는 링크를 제공해 주실 수 있습니까? 배열/해시를 가져 와서 perl에서 인쇄 할 수 있습니다. – Mannii88

+0

(@row = $ sth-> fetchrow_array()) { print "@row \ n"; 하지만, 내가 성명을 위해 사용하고자한다면, 행 수를 얻고 루핑을주는 법 ... – Mannii88

+1

실제로 당신이 실제로 선택할 때까지 선택된 행의 행 수를 알려주는 많은 DBD를 찾을 수 있을지 의심 스럽다. 그들 모두를 가져 왔고, 경우에 따라서는 중요하지 않습니다. fetchall_arrayref/fetchall_hashref를 사용하여 결과 집합의 모든 행을 가져올 수 있지만 분명히 그 행을 포함 할 메모리가 필요합니다. 이러한 메서드와 함께 MaxRows를 사용하여 각 호출과 함께 반환되는 행을 제한 할 수 있습니다. DBI 문서에는 몇 가지 좋은 예가 있습니다. – bohica