2016-07-27 15 views
-1

Ich bin ziemlich neu zu OOP und PDO und ich habe Probleme mit meiner Funktion. Immer wenn ich auf den Update-Button klicke, wird nicht aktualisiert, sondern ein neues Mitglied für mich erstellt.UPDATE OOP PDO PROBLEME

public function updateAll($data){ 

    try { 

     $r = $this->db->query("UPDATE addmember SET(
      Pic = '".$data[0]."', 
      Firstname= '".$data[1]."', 
      Lastname= '".$data[2]."', 
      Age= '".$data[3]."', 
      Gender= '".$data[4]."', 
      Phonenumber='".$data[5]."', 
      Location='".$data[6]."', 
      Member='".$data[7]."', 
      Department='".$data[8]."' 

      WHERE id='".$data[9]."' 

      )"); 
     if ($r) { 
      return true; 
     } 
     else{ 
     return false; 
     } 

    } catch (PDOException $e) { 

     echo $e->getMessage(); 

    } 

} 
+0

für die Seite ist es das, was –

+0

die Schaltfläche nicht – Drew

+2

sind finctioning scheinen Sie den Wert von PDO zu fehlen - verwenden vorbereitete Anweisungen anstatt Variablen direkt in der SQL-Einbettung ... – RamRaider

Antwort

1

Nicht getestet, aber Sie könnten PDO mit vorbereiteten Anweisungen wie diesem verwenden.

public function updateAll($data=false){ 
    try { 
     if(!$data) return false; 

     $sql='update `addmember` set 
      `pic`=:pic, 
      `firstname`=:firstname, 
      `lastname`=:lastname, 
      `age`=:age, 
      `gender`=:gender, 
      `phonenumber`=:phonenumber, 
      `location`=:location, 
      `member`=:member, 
      `department`=:department 
      where id=:id;'; 

     $params=array(
      ':pic'   => $data[0], 
      ':firstname' => $data[1], 
      ':lastname'  => $data[2], 
      ':age'   => $data[3], 
      ':gender'  => $data[4], 
      ':phonenumber' => $data[5], 
      ':location'  => $data[6], 
      ':member'  => $data[7], 
      ':department' => $data[8], 
      ':id'   => $data[9] 
     ); 

     $stmt=$this->db->prepare($sql); 
     foreach($params as $param => $value)$stmt->bindParam($param, $value); 

     return $stmt->execute(); 
     /* 
      or, easier and quicker would be to ignore binding params and simply do:- 
      return $stmt->execute($params); 
     */ 

    } catch(PDOException $e) { 
     echo $e->getMessage(); 
    } 
}