2015-05-07 173 views
0

我在下面的PHP代码:MySQL错误:1064

try{ 
    $stmt = $db->prepare('SELECT nume,prenume FROM candidati'); 
    $stmt->execute(); 
    while($row = $stmt->fetch(PDO::FETCH_OBJ)){ 
     $aux = $row->nume.' '.$row->prenume; 
     $st = $db->prepare('SELECT COUNT(id) AS total FROM votanti WHERE consiliul_local=?'); 
     $st->execute(array($aux)); 
     while($r = $st->fetch(PDO::FETCH_OBJ)){ 
      $s = $db->prepare("INSERT INTO rezultate SET obtinute=:o WHERE nume=:n AND prenume=:p"); 
      $s->bindParam(':o',$r->total,PDO::PARAM_INT); 
      $s->bindParam(':n',$row->nume,PDO::PARAM_STR); 
      $s->bindParam(':p',$row->prenume,PDO::PARAM_STR); 
      $s->execute(); 
     } 
    } 
} catch(PDOException $e){ 
    echo $e->getMessage(); 
} 

及以下等级:

class DB{ 
    public static function connect($engine,$host,$user,$pass,$name){ 
     try{ 
      $dbh = new PDO("$engine:host=$host;dbname=$name;charset=utf8",$user,$pass); 
      $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
      $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 
      return $dbh; 
     } catch(PDOException $e){ 
      echo $e->getMessage(); 
     } 
    } 
} 

但是,当我执行第一段代码,它发送此错误信息:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE nume=? AND prenume=?' at line 1

你能给我一个关于如何解决这个问题的提示吗?谢谢!

+1

'INSERT INTO rezultate' did you mean'update rezultate'? –

+0

你的意思是改为'UPDATE'吗? – Augwa

+0

是的......应该有更新。尴尬:( –

回答

7

INSERT陈述没有WHERE子句。您需要改用UPDATE

$s = $db->prepare("UPDATE rezultate SET obtinute=:o WHERE nume=:n AND prenume=:p");