2011-02-27 81 views
0

嗨即時嘗試更新數據庫中的單個字段,並保留其他字段中的值的其餘部分,但它繼續刪除其餘的字段的領域..不知道我做錯了什麼?繼承人一些代碼更新mysql中的單個字段,同時保留其他字段中的值的其餘部分

if(isset($_POST['submit_approve'])) { 
    $comment = new Comment(); 
// $comment->author = $author; 

// $comment->blog_id = $blog_id; 

// $comment->body = $body; 

// $comment->created =$created; 

    $comment->visible = $_POST['visible']; 
    $comment->id = $_GET['id']; 
     if($comment->update()) { 
     } else { 

     } 
    } 

這是我嘗試更新,你可以看到我只是想更新表和IVE可見光領域得到了4個領域的評論,所以你可以看到..

這裏是功能

public function update() { 
     global $database; 

     $attributes = $this->sanitized_attributes(); 
     $attribute_pairs = array(); 
     foreach($attributes as $key => $value) { 
      $attribute_pairs[] = "{$key}='{$value}'"; 
     } 
     $sql = "UPDATE ".self::$table_name." SET "; 
     $sql .= join(", ", $attribute_pairs); 
     $sql .= " WHERE id=". $database->escape_value($this->id); 
     $database->query($sql); 
     return ($database->affected_rows() == 1) ? true : false; 
    } 

任何人都可以看到我哪裏會出錯?歡呼聲

回答

0

最有可能的$值未設置某些項目(虛假或無效或「」),但你不管它添加到您的$ attribute_pairs陣列。然後在你的更新中,你將全部加入。大概最容易做的事情會是這樣的:

if (($value != null) && ($value != false) && ($value != '')) { 
    $attribute_pairs[] = "{$key}='{$value}'"; 
} 
+0

好東西歡呼 – bob 2011-02-27 22:06:05

0

有兩種方法來解決這個問題:

  1. 找回原來的行,修改相應的字段,並保存/更新。

  2. 限制獲取更新的字段,可能是通過將字段作爲參數傳遞給方法進行更新。在您的foreach循環

相關問題