Привет. ;) Не дайте голову сломать, а?
в таблице хранятся данные вида: ФАМИЛИЯ Имя
таблица небольшая, около 500 записей. Есть текстовый файл (изначально - файл Экселя) разделители - табулятор.
хочется читать файл, сравнивать фамилию из базы с той, которая есть в файле, если совпали фамилия и имя - добавить в базу некоторые записи. Проблема в том, что код находит не все фамилии. То есть в базе точно есть такая фамилия, а результат работы кода говорит, что нет. При этом если ручками сделать селект из базы с такой фамилией - показывает, что есть. Но скрипт не находит. ума неприложу в чем может быть проблема. даже не могу найти закономерности по которой он их пропускает. одни находит, другие - нет. интересно было бы узнать почему собственно. Уже по-всякому пробовала - результат тот же. Есть определенный список фамилий, которые он не хочет находить:my ($j,$k)=(1,1);
my($lastname,$name,$middlename,$born,$prof,$work_plase,$job,$awards,$postal,$h_ph,$w_ph,$m_ph,$email,$content);
my $exist = qq~select id,lastname,firstname from experts where lastname like ? and firstname like ?~;
my $expExist = $dbh->prepare($exist) or die $DBI::errstr;
open(D,"<",$pt) or die "Can\'t read $pt: $!";
unless (flock(D, LOCK_SH | LOCK_NB)) {
local $|=1;
print "$pt temporarily unavailable - wait for unlock";
flock(D, LOCK_SH) or die "Can\'t lock $pt: $!";
print "Got it!\\n
";
}
seek(D,0,0);
while() {
($lastname,$name,$middlename,$born,$prof,$work_plase,$job,$awards,$postal,$h_ph,$w_ph,$m_ph,$email,$content)=split("\\t");
if($lastname) {
$lastname = uc($lastname); chomp($content);
$expExist->bind_param(1,$lastname);
$expExist->bind_param(2,$name);
my @row = $dbh->selectrow_array($expExist);
if($row[0]) {
$middlename=$dbh->quote($middlename);
...
print qq~$j. $row[0] - $row[1] $row[2] from file: /$lastname $name/~; $j++;
} else {print qq~$k. $lastname $name~; $k++;}
} else {next}
}
#$dbh->commit();
#$dbh->disconnect();
flock(D,LOCK_UN);close(D);
exit
понимаю - код не очень маленький, но - возможно - сразу кто-то увидит в чем здесь проблема.
спасибо.