나는 sqlite 데이터베이스와 통신하기 위해 perl을 사용하고 있으며 오류가 발생합니다. 나는 (그들은 또한 많은 다른 '이상한 문자를'이 (변수 $ 약물에 저장) 화학 이름의 일부 그들에 쉼표가 있기 때문에 생각합니다.perl 쿼리 이름에 DBI 쉼표
어떤 도움을 주시면 감사하겠습니다, 감사합니다.
**error message:**
- read in 57to find CIDs for
- Opened database successfully
- retrieving results for cyclo(L-Val-L-Pro)
- retrieving results for Sinapic_acid
- retrieving results for NHQ
- DBD::SQLite::db prepare failed: near ",": syntax error at get_drugName2IDinfo.sqlite.pl line 33.
- DBD::SQLite::db prepare failed: near ",": syntax error at get_drugName2IDinfo.sqlite.pl line 33.
라인 33 :
my $stmt = qq(SELECT * from chem_aliases WHERE alias LIKE '$drug%');
예 약품 이름 :
0,123,488,부분 스크립트
my %HoDrugs;
while (my $line=<IN>){
chomp $line;
$HoDrugs{$line}=1;
}
close(IN);
print "read in\t".scalar(keys %HoDrugs)."to find CIDs for\n";
##
my $driver = "SQLite";
my $database = "/Users/alisonwaller/Documents/Typas/ext_data/STITCHv3.1/STITCHv3.1.sqlite.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
or die $DBI::errstr;
print "Opened database successfully\n";
###
my $outfile="$in_drugNms.sq.plsCIDs.tab";
open (OUT,">",$outfile);
foreach my $drug (keys %HoDrugs){
my $stmt = qq(SELECT * from chem_aliases WHERE alias LIKE '$drug%');
my $sth = $dbh->prepare($stmt);
my $rv = $sth->execute() or die $DBI::errstr;
if($rv < 0){
print $DBI::errstr;
}
while(my @row = $sth->fetchrow_array()) {
print "retrieving results for\t$drug\n";
print OUT join("\t",$drug,$row[0],$row[1],$row[2]) . "\n";
}
}
print "Operation done successfully\n";
$dbh->disconnect();
[Perl 사용? 작은 따옴표 안에 바인딩] (http://stackoverflow.com/questions/12773109/using-perl-bind-inside-single-quotes). –
위험! http://bobby-tables.com/, [자리 표시 자/바인드 변수] (http://bobby-tables.com/perl.html) –