in reply to DB Not UPDATE-ing

Do you really have two fields named unsubscribedby? I can see how that would confuse things. Also, does unsubscribedby really equal the empty string, or is it NULL? Did you try taking your WHERE clause and using it in a SELECT to see what rows you get returned?


$;=sub{$/};@;=map{my($a,$b)=($_,$;);$;=sub{$a.$b->()}} split//,".rekcah lreP rehtona tsuJ";$\=$ ;->();print$/

Replies are listed 'Best First'.
Re: Re: DB Help Request
by vbrtrmn (Pilgrim) on Sep 14, 2003 at 14:40 UTC
    no .. sorry really tired.

    --
    paul

      Try adding a SELECT, to see whether the WHERE clause is matching the records at all...

      my $SELECT = "SELECT * FROM mytable WHERE usercode=? AND unsubscribe +dby = ''"; my $UPDATE = "UPDATE mytable SET subscribed = '0', unsubscribedby = +'SYSTEM' WHERE usercode=? AND unsubscribedby = ''"; for (@usercodelist) { my $sth = $DBH->prepare($SELECT); my $q = $sth->execute($_); while (my $r = $q->fetchrow_hashref()) { print "Matched $$_{usercode}\n"; } $sth = $DBH->prepare($UPDATE); $sth->execute($_) or die "<div>Could not execute SQL statement ... maybe invalid?</d +iv><div>$!</div>"; $sth->finish(); }

      If you don't get any "Matched" lines, then the WHERE clause is the problem. If all the correct records get "Matched" lines, then the WHERE clause is not the problem.


      $;=sub{$/};@;=map{my($a,$b)=($_,$;);$;=sub{$a.$b->()}} split//,".rekcah lreP rehtona tsuJ";$\=$ ;->();print$/