Changeset 114

Show
Ignore:
Timestamp:
12.12.2006 21:05:54 (2 years ago)
Author:
jorge
Message:

Change: MySQL commands are now immune to unusual characters in values, solving odd errors when filenames had apostrophes, parenthesis, and other assorted odd characters.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/devel/FuzzyOcr/Hashing.pm

    r107 r114  
    9595            if ($data[2] eq '') { 
    9696                infolog("Updating $txt info File-Name:'$fname'"); 
    97                 $ddb->do(qq(update $db.$dbfile set $dbfile.fname='$fname' where $dbfile.key='$key')); 
     97                $ddb->do(qq(update $db.$dbfile set $dbfile.fname=? where $dbfile.key='$key'),undef,$fname); 
    9898            } 
    9999            if ($data[3] eq '') { 
    100100                infolog("Updating $txt info Content-Type:'$ctype'"); 
    101                 $ddb->do(qq(update $db.$dbfile set $dbfile.ctype='$ctype' where $dbfile.key='$key')); 
     101                $ddb->do(qq(update $db.$dbfile set $dbfile.ctype=? where $dbfile.key='$key'),undef,$ctype); 
    102102            } 
    103103            if ($data[4] != $ftype) { 
    104104                infolog("Updating $txt info File-Type:'$ftype'"); 
    105                 $ddb->do(qq(update $db.$dbfile set $dbfile.ftype='$ftype' where $dbfile.key='$key')); 
     105                $ddb->do(qq(update $db.$dbfile set $dbfile.ftype=? where $dbfile.key='$key'),undef,$ftype); 
    106106            } 
    107107        } 
     
    135135            infolog("Matched [$next] time(s). Prev match: ".fmt_time($now - $when)); 
    136136            $sql = qq(update $db.$dbfile set $dbfile.match='$next',$dbfile.check='$now' where $dbfile.key='$key'); 
    137             debuglog($sql,2); 
    138137            $ddb->do($sql); 
     138            debuglog($sql); 
    139139        } 
    140140        return ($ret,$dinfo); 
     
    243243                    infolog("Hash already in $db.$table updating..."); 
    244244                    $sql  = "update $db.$table set "; 
    245                     $sql .= "basic='$img',"   unless ($data[1] eq $img); 
    246                     $sql .= "fname='$fname'," unless ($data[2] eq $fname);  
    247                     $sql .= "ctype='$ctype'," unless ($data[3] eq $ctype);  
    248                     $sql .= "ftype='$ftype'," unless ($data[4] == $ftype); 
    249                     $sql .= "score='$score'," unless ($data[8] == $score); 
    250                     $sql .= "dinfo='$dinfo'," unless ($data[9] eq $dinfo); 
     245                    my @params; 
     246                    unless ($data[1] eq $img) { 
     247                        $sql .= "basic=?,"; push @params,$img; 
     248                    } 
     249                    unless ($data[2] eq $fname) { 
     250                        $sql .= "fname=?,"; push @params,$fname; 
     251                    } 
     252                    unless ($data[3] eq $ctype) { 
     253                        $sql .= "ctype=?,"; push @params,$ctype; 
     254                    } 
     255                    unless ($data[4] == $ftype) { 
     256                        $sql .= "ftype=?,"; push @params,$ftype; 
     257                    } 
     258                    unless ($data[8] == $score) { 
     259                        $sql .= "score=?,"; push @params,$score; 
     260                    } 
     261                    unless ($data[9] == $dinfo) { 
     262                        $sql .= "dinfo=?,"; push @params,$dinfo; 
     263                    } 
    251264                    $sql  =~ s/,$//; 
    252265                    $sql .= " where $table.key='$key'"; 
     266                    $ddb->do($sql,undef,@params); 
     267                    foreach my $p (@params) { $sql =~ s/\?/$p/; } 
    253268                    debuglog($sql); 
    254                     $ddb->do($sql); 
    255269                } else { 
    256270                    infolog("Hash already in $db.$table skipping..."); 
    257271                } 
    258272            } else { 
    259                 $sql = 
    260                     "insert into $db.$table values ('". $key 
    261                      . "','" . $img 
    262                      . "','" . $fname 
    263                      . "','" . $ctype 
    264                      . "','" . $ftype 
    265                      . "','" . ($table eq $conf->{focr_mysql_hash} ? 0 : 1) 
    266                      . "','" . time 
    267                      . "','" . time 
    268                      . "','" . $score 
    269                      . "','" . $dinfo 
    270                      . "')"; 
     273                my @params = ( 
     274                    $key, $img, $fname, $ctype, $ftype, 
     275                    ($table eq $conf->{focr_mysql_hash} ? 0 : 1), 
     276                    time, time, $score, $dinfo); 
     277                $sql = "insert into $db.$table values (?,?,?,?,?,?,?,?,?,?)"; 
     278                $ddb->do($sql,undef,@params); 
     279                foreach my $p (@params) { $sql =~ s/\?/$p/; } 
    271280                debuglog($sql); 
    272                 $ddb->do($sql); 
    273281            } 
    274282        }