2011-02-27 80 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循环

相关问题