Пожалуйста, проверьте еще раз:
- $ 3 содержит что-то разумное
- , объединяющее значение $ 3, и "\ n" (путем интерполяции) является правильным ("\ n" в поле?)
- как 'не интерполируется =>
my $st_ht->bind_param(1, $d_var);
(я не понимаю документы DBI, как это делает Крис Ледет.)
2-йдумал:
Этот фрагмент кода:
my $v = "nix nix 1001";
print "$v\n";
print '$v\n', "\n";
if ($v =~ m/(nix) (nix) (\d+)/) {
print 'found: ', $3, "\n";
$sth = $dbh->prepare('SELECT * FROM sample01.csv WHERE GRUPPE=?');
$sth->bind_param(1, $3);
$sth->execute;
while(my @row = $sth->fetchrow_array()) {
print '|', join( '|', @row ), "|\n";
}
} else {
print "no match\n";
}
и вывод:
DBI: 1.616 DBD::CSV: 0.33
|00000089-6d83-486d-9ddf-30bbbf722583|2011-09-17 16:25:09|1001|
|000004c9-92c6-4764-b320-b1403276321e|2011-11-09 13:52:30|2000|
nix nix 1001
$v\n
found: 1001
|00000089-6d83-486d-9ddf-30bbbf722583|2011-09-17 16:25:09|1001|
должен иллюстрировать:
- 'не интерполируется, ваш '$ d_var' передаст это имя переменной буквально в DBI
- для правильного соответствия не нужно "\ n", чтобы "работать"
- последовательность параметров для bind_param это число, значение