2013-07-29 173 views
0

我想从数据库中删除一些数据。但是,它让我看到以下错误:从数据库中删除数据

Unmatched right curly bracket at C:/wamp/bin/apache/apache2.2.22/cgi-bin/ova/db.pl line 13, at end of line\r 
Missing $ on loop variable at C:/wamp/bin/apache/apache2.2.22/cgi-bin/ova/db.pl line 28.\r 

代码:

package DBM; 
use DBI; 
use POSIX 'fmod'; 

#variabel globale qe formon connection string 
our $rConn = { 
    database => 'people', 
    user  => 'root', 
    pass  => '', 
    host  => '127.0.0.1' 
}; 

#variabel global qe percakton rdbms qe do te perdoret (ex.mysql,postgres etj) 
our $rdbms = "mysql"; 

#variabel global qe percakton handle per te kryer lidhjen me Databazen 
our $dbh = undef; 

sub connection { 
    $dbh = DBI->connect("DBI:$rdbms:".$rConn->{database}.":". $rConn->{host}, $rConn->{user}, $rConn->{pass}); 
    return ($dbh); 
}; 


sub do_delete { 
    my $rData = @_; 
    my $rCondition = $rData->{condition}; 
    my $cWhere = " WHERE 1=1 "; 
    my $i=0; 
    foreach my ($key,$value)($rCondition){ 

     if (scalar($value)>1){ 
      $cWhere .= " AND ". $key; 
      my $counter=0; 
      foreach my $cValueArray ($value){ 
       if(fmod($counter,3)==0) { 
        $cWhere.=" ".$key." ".$cValueArray." "; 
       } 
       else { 
        $cWhere.= " ".$value. " "; 
       } 
      } 
     } 
     else{ 
      $cWhere .= " AND ". $key."=". $value; 
     } 
    } 

    my $queryDelete = "DELETE FROM $rData->{table} $cWhere"; 
    return ($queryDelete); 
    my $dbh = connection; 
    $dbh->prepare($queryDelete) or die "Can't prepare $queryDelete: $dbh->errstr\n"; 
    return ($sqlDelete->execute); 
} 
1; 

我不能看到哪里是问题。

+0

也使用适当的占位符! – hwnd

+0

如果可能的话,请按照您执行的程序(db.pl)准确输入行号。 – 2013-07-29 13:24:16

+1

另外,看来,这是包DBM.pm而不是db.pl。我们可以有db.pl的代码吗? – 2013-07-29 13:30:59

回答

0

不知道的第一个错误,但

foreach my ($key, $value) ($rCondition) { 

似乎很奇怪。只能有一个循环变量,而不是一对。

+0

@Suic:那么他/她应该使用'while(my($ key,value)= each%$ rCondition){'。 – choroba

+0

是的,当然''while',对不起 – Suic