3
그건 내 코드의 일부입니다. Gmail에서받은 메시지 ID를 사용하여 SELECT를 수행합니다. 데이터베이스에 base64 형식으로 저장되고 simbols가없는 "<>"Msg_id.DBD :: Pg :: st 실행 실패 : 오류 : "***"열이 없습니다.
my $inbox = $imap->select("Inbox") or die "Select error: ", $imap->LastError, "\n";
my @mails = ($imap->unseen);
foreach my $msgid (@mails) {
my $m_id = $imap->parse_headers($msgid, "Message-id")->{"Message-id"}->[0] . "\n";
$m_id =~ s/[<\>]//g;
$m_id = encode_base64($m_id);
$m_id =~ s/\r?$//;
my $q1 = "select id from mails.mails_in where user_id=$param[5] and message_id=$m_id and user_remote_id=$param[6]";
$sth = $dbh->prepare($q1);
$rv = $sth->execute();
my @array;
while (@array = $sth->fetchrow_array()) {
foreach my $i (@array) {
print "$i\t";
}
print "\n";
}
}
그러나이 오류가 발생합니다.
DBD::Pg::st execute failed: ERROR: column "zdjkot..." does not exist
LINE 1: ...mails.mails_in where user_id=15206 and message_id=ZDJkOTQ1NT...
^at ./script.pl line 65.
기존의 msg_id를 기반으로 사용하려고했는데 그 결과는 비슷합니다. 다른 SELECT의 작업이 올바르게 수행되었습니다. 비슷한 SELECT가 PHP에서 올바르게 작동합니다.
내가 사용 : 당신은 $m_id
my $q1 = "select id from mails.mails_in where user_id=$param[5] and message_id='$m_id' and user_remote_id=$param[6]";
에 대한 작은 따옴표를 놓치고 펄 v5.18.2, PostgreSQL의 v8.4.14
작동합니다. 고마워요! – user3751471
사실을 분명히 강조하겠습니다. 자리 표시자를 사용하는 것이 더 나은 것은 아니며, 유일한 올바른 방법입니다 !!! – salva
조언 해 주셔서 감사합니다. – user3751471