Sorry -- first of all, please keep dbi-users on the mailing cc line or the
to line. Others may see something I don't or be able to offer help that I
can't.
Since you are using ? for the place holders, you need to bind_param(N,xxxx,
yyyy) where N is the numerical order for the ?. I.e.
$sth = $dbh->prepare("insert into foo (a, b) values (?, ?)");
while (get_my_data) {
$sth->bind_param(1, $a_value, SQL_LONGVARCHAR);
$sth->bind_param(2, $b_value, SQL_LONGVARCHAR);
$sth->execute;
}
Try that pattern and see if that works for you.
Jeff
> -----Original Message-----
> From: Brad Smith [mailto:[EMAIL PROTECTED]]
> Sent: Monday, September 09, 2002 8:14 PM
> To: Jeff Urlwin
> Subject: RE: Quirky problem with DBI
>
>
> Jeff:
>
> Still, no luck. I have altered the code (below), but it fails with the
> following error. PArdon my ignorance. I am a newbie w/ DBI. I was
> also wondering how a bind_param works in this situation, since I want
> to use a WHERE statement (like the #'d lines).
>
> The code:
>
> my $dbh = DBI->connect("dbi:ODBC:gatekeepers") || die DBI::errstr;
>
> my $sth1->bind_param('case_notes1',undef,SQL_LONGVARCHAR);
> $sth1->execute($in{'case_notes1'});
> my $sth2->bind_param('case_notes2',undef,SQL_LONGVARCHAR);
> $sth2->execute($in{'case_notes2'});
> my $sth3->bind_param('case_notes3',undef,SQL_LONGVARCHAR);
> $sth3->execute($in{'case_notes3'});
> my $sth4->bind_param('case_notes4',undef,SQL_LONGVARCHAR);
> $sth4->execute($in{'case_notes4'});
>
>
> # my $sth = $dbh->prepare("UPDATE gatekeepers
> # SET case_notes1 = ?
> # WHERE sid = ?
> # ") || die DBI::errstr;
> #
> # $sth->execute($in{'case_notes1'}, $in{'sid'});
>
> $dbh->disconnect();
>
> The error:
> Can't call method "bind_param" on an undefined value at c:/i-
> networks/soar/cgi-bin/collab_gatekeepers_channel_open.pl line 960.
>
> Thanks for your help. I am under the gun right now, and nothing seems
> to be working correctly.
>
> Brad Smith
>
>
>
>
> On 9 Sep 2002 at 18:12, Jeff Urlwin wrote:
>
> > Yes, access is sometimes quirky about longs/memos. Try doing this (in
> > pseudo code) (warning, may wrap long lines):
> > #!perl -w
> > # above line makes sure perl is running with warnings.
> > use strict; # make sure we have strict on to check for dumb typos
> > use DBI qw(:sql_types); # make sure we use DBI and import type names,
> > such
> > as SQL_LONGVARCHAR
> > connect()
> > $sth = prepare()
> >
> > # only for memos/long fields, where N is the column number
> > $sth->bind_param(N, undef, SQL_LONGVARCHAR);
> >
> > etc
> >
> > $sth->execute(args)
> >
> > If that fails for some reason, let me know. The fall back is to use
> > bind_param() for each of them and pass no arguments to execute().
> >
> > Regards,
> >
> > Jeff
> >
> > >
>
>