|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Jahor Miadzviedziew 2:450/217 28 Nov 2003 01:21:57 To : All Subject : dbi: почему не работает следующая конструкция?.. --------------------------------------------------------------------------------
[1]
use strict;
use DBI;
...
$tmp{'links'} =
$dbh->prepare( "SELECT field1, field2 FROM table2 WHERE field3=?" );
$tmp{'links'}->execute( $$ref{'field1'} );
$tmp{'links'} = $tmp{'links'}->fetchall_arrayref( {} )
or die $dbh->errstr() . "\n";
...
этот пример работает.
[2]
use strict;
use DBI;
...
$tmp{'links'} = $dbh->prepare(
"SELECT field1, field2 FROM table2 WHERE field3=?"
)->execute( $$ref{'field1'} )->fetchall_arrayref( {} )
or die $dbh->errstr() . "\n";
...
этот пример не работает, падает с сообщением: Can't call method
"fetchall_arrayref" without a package or object reference at
/var/www/html/test3/cgi-bin/index.pl line 263. почему? почему, скажем,
[3]
sub utf82koi {
return Text::Iconv->new( "UTF-8", "CP1251" )->convert(shift);
}
работает без проблем и делает именно то, что от него просят? где
принципиальная разница между вызовами [2] и [3]?
$ref является ссылкой на хэш ($ref = $sth->fetchrow_hashref() в while)
и определена в обоих ([1] и [2]) случаях.
--
corvus corax @home || if you touch me, i'll reap you apart
GPG Fingerprint = 7954 5713 19D0 2713 A3B0 9B79 6F8E 4C25 E279 A165
--- tin/1.6.0-20030714 ("Vatersay") (UNIX) (Linux/2.4.20-xer2-up (i686))
* Origin: corvus corax' nest (2:450/217)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/2725db261e6c.html, оценка из 5, голосов 10
|