제발 내가 몇 시간 동안 노력해 왔던이 코드로 문제를 추적하는 데 문제가 있습니다. 그것은 나에게 오류 DBD를 제공 :: mysql을 :: 번째 fetchrow_hashref 실패 :이 문제의 경우 15perl에서 DBD와 mysql에 문제가 발생했습니다
sub Split_Into_Words
{
#### Connection parameters ############################
my $dsn = "dbi:mysql:malware:localhost:3306";
my $user = 'root';
my $passwd = 'sxxxs';
########################################################
my $domain ;
my $countDir = 0 ;
my $file = shift ;
my $labelID = (split(/[.]/ , $file))[1] ; ### Split and get the middle value since format is temporay.
#### Query String ############################################################################
my $InsertIntoHostTable_QS = "INSERT INTO TB_host(HostName , UrlID , ExtID) Values (? , ? , ?) ; ";
my $InsertIntoDomainTable_QS = "INSERT IGNORE INTO TB_Domain(Domain) values (?) ;" ;
my $InsertIntoArgVal_QS = "INSERT INTO TB_Arg_Value(Arg, URL_ID) VALUES (? , ?) ; " ;
my $InsertIntoDirectory_QS = "INSERT INTO TB_Directory(DIRNAME , DEPTH , URLID) VALUES (? , ? , ?)" ;
my $InsertIntoExtension_QS = "INSERT IGNORE INTO TB_Extension (Extension) values (?) ; ";
my $InsertIntoExtensionNULL_QS = "INSERT IGNORE INTO TB_Extension (ID , Extension) values (? , ?) ; ";
my $SelectString = " Select URL , ID from TB_URL where LabelID = '" . $labelID."';";
my $InsertIntoFileName_QS = "INSERT IGNORE INTO TB_FileName(filename) VALUES (?) ; " ;
###################################################################################################
my $DBIConnect = DBI->connect($dsn , $user , $passwd) or die("Cannot connect to datadbase $DBI::errstr\n");
print ("Splitting Into Words \n");
######Initialization of a default DB value #################
my $sth = $DBIConnect->prepare($InsertIntoExtensionNULL_QS);
$sth->execute(1 , 'null') or die("Error Executing the Insertion" . $sth->errstr);
$sth->finish();
#############################################################
$sth = $DBIConnect ->prepare($SelectString);
sleep(10);
open (FH , '<' , $file); # Open file to be read from disk
my $i = 0;
$sth->execute() or die("Error Executing the Insertion" . $sth->errstr);
->line 15 while(my $hash_ref = $sth->fetchrow_hashref)
{
my $extensionID = "1";
my $intialURL = $hash_ref->{URL} ;
my $initialID = $hash_ref->{ID};
}
}
먼저, 놓여져 '... 또는 다이 $ dbh-> errstr을,'모든 '준비() 호출 이후'. 둘째,'$ SelectString'을위한 SQL에서'$ labelID'를 이와 같이 연결하는 것이 아니라 바인드 매개 변수로 만드십시오. 이 두 가지 문제를 해결하면 문제가 해결되거나 실제 문제가 무엇인지 분명히 알 수 있습니다. – frezik