ユーザーの入力を取得し、SQLのLikeステートメントに送信しようとしています。しかし、私はエラーを取得しています:定義されていないメソッド "bind_param"を呼び出すことはできません。 私のオリジナルコード:PerlユーザーのSQLへの入力Likeステートメント
#!/usr/bin/perl
use DBI;
#use DBD::Oracle;
use strict;
use warnings;
use CGI;
print "Enter INCD number : ";
my $input = <>;
chomp $input;
my $DSN = 'driver={SQL Server};Server=ddsfs1; database=sdfds;TrustedConnection=Yes';
my $dbh = DBI->connect("dbi:ODBC:$DSN")
#print "connected.."
or die "$DBI::errstr\n";
my $query = $dbh->prepare("SELECT TOP 20 Id
,Created
,Updated
,Message
FROM FrameworkDEV3.Log.Entry
where Message like ?
and Created >= DATEADD(day, -10, GETDATE())
order by Created desc");
$sth->bind_param(1, '%$input%');
print $sth;
$sth->execute;
#DBI::dump_results($sth);
while(my @data = $query->fetchrow_array())
{
foreach(@data) {
print "[$_]";
}
print "\n\n";
}
$sth->finish;
$dbh->disconnect;
#print "Connected..";
print "\n";
次のコードは、デイブとジムからのコメントごとに固定されている:
my $sth = $dbh->prepare("SELECT TOP 20 Id
,Created
,Updated
,Message
FROM FrDEVsd.Log.Entry
where Message like ?
and Created >= DATEADD(day, -10, GETDATE())
order by Created desc");
$sth->bind_param(1, "%$input%");
print $sth;
$sth->execute;
#DBI::dump_results($sth);
while(my @data = $sth->fetchrow_array())
{
foreach(@data) {
print "[$_]";
}
print "\n\n";
}
$sth->finish;
$dbh->disconnect;
印刷 "\ n" は、
今取得エラーイムは、あなたのコードで
DBI::st=HASH(0x2a9a480)
準備された文は '$ query'に格納されます。 '$ sth'は決して定義されていないので、間違っていることをエラーメッセージが正確に伝えています。 –
*現在のエラーは 'DBI :: st = HASH(0x2a9a480)' *です - これはエラーではありません。これはあなたの 'print $ sth'ステートメントからの出力です。 –