List:General Discussion« Previous MessageNext Message »
From:Paul DuBois Date:January 19 2003 11:56pm
Subject:Re: SELECT * WHERE DATE > TODAY
View as plain text  
At 15:40 -0800 1/19/03, Melissa Stranzl wrote:
>I am trying to get my program to be searchable by
>date, but it doesn't work.  I get an error message in
>perl, that follows the code I included.  Any
>suggestions are greatly appreciated.
>
>PERL
>----------
>@currenttime= localtime();
>
>$y= $currenttime [5] + 1900;
>
>$m= $currenttime [4];
>$dom= $currenttime [3];
>
>$ydoy= $y*1000 + $m + $dom;
>print $ydoy;
>
>my $dbh= DBI->connect ('DBI:mysqlPP:myd:localhost',
>'pass', 'pass') ||die "Could not connect to database:
>".DBI->errstr;
>my $sth = $dbh->prepare("SELECT * from food WHERE
>end_date > $ydoy");
>$sth->execute($ydoy);

Wouldn't it be simpler to skip all that date manipulation stuff and
simply write your query like this?

SELECT * from food WHERE end_date > CURDATE()


>while((end_date > $ydoy) = $sth->fetchrow_array)

That's illegal, because you're trying to assign a value to an
expression.  Also, "end_date" is a bareword.  Anyway, doesn't
your query already rule out records where the end_date values
are not greater than the current date?  So you should be able
to just write this as:

while (($start_date, $end_date, $event) = $sth->fetchrow_array)

(I'm assuming that SELECT * returns rows in start_date, end_date, event
column order, which may be incorrect.  If you're retrieving arrays,
you *REALLY* should name the columns explicitly in the order you want
in the SELECT statement, and *NOT* use SELECT *, which guarantees nothing
about column order in the result set.)

>{
>print "$start_date\n, $end_date\n, $event\n, $id";
>}
>
>die $sth->errstr if $sth->err;
>
>
>$sth->finish();
>$dbh->disconnect();
>
>ERROR MESSAGE:
>--------------
>
>can't modify generic gt()) in list assignment at line
>31 (which is the fetchrow_array line)
>repeated HERE:
>while((end_date > $ydoy) = $sth->fetchrow_array)
>{
>print "$start_date\n, $end_date\n, $event\n, $id";
>}
>
>
>Thanks again for your help.
>
>Melissa Stranzl
>
>917-922-7872

Thread
SELECT * WHERE DATE > TODAYMelissa Stranzl20 Jan
  • Re: SELECT * WHERE DATE > TODAYPaul DuBois20 Jan