Hi all,

I am retrieving some data from a syslog mysql database:

#!/usr/bin/perl
use warnings;
# use strict;
use DBI;

my $dbh = DBI->connect('dbi:mysql:syslog', 'user', 'passwd')
   or die DBI->errstr;

        my $sth = $dbh->prepare("SELECT * from logs where host = ?"
                or die $dbh->errstr;

                print "Enter host: ";
                while ($host = <>) {
                   my @data;
                           chomp $host;
                                   $sth->execute($host) or die $sth->errstr;

This works as expected, I am prompted to enter a hostname and get the
results in the rest of the script which is not necessary to show
because the error comes here:

if i substituet in my $sth

        my $sth = $dbh->prepare("SELECT * FROM logs where datetime like '?'")
           or die $dbh->errstr;
                print "Enter datetime: ";
                while ($datetime = <>) {
                   my @data;
                           chomp $datetime;
                                   $sth->execute($datetime) or die $sth->errstr;

then I am prompted to enter a date, which I can, but immediately after
that:

DBD::mysql::st execute failed: called with 1 bind variables when 0 are
needed at datetime.pl line 19, <> line 1.

The difference is in the SELECT like '?', I have tried like '%?%', but
it does not work either. In fact I need '%?%' which is what really works
for the mysql statement.

If I define $datetime beforehand and interpolate it in the query, it
works, but I read here that it is not reccommended:

http://www.perl.com/pub/a/1999/10/DBI.html

Any help greatly appreciated, I continue reading perldoc DBD::mysql,
perldoc DBI etc.

--
Groeten,
J.I.Asenjo

Reply via email to