更新mysql中的单个字段,同时保留其他字段中的其余值

时间:2011-02-27 21:44:55

标签: php 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 {

      }
    }

这就是我想要更新的内容,你可以看到我只想更新表格中的可见字段,我还有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;
    }

任何人都可以看到我出错的地方吗?欢呼声

2 个答案:

答案 0 :(得分:0)

有两种方法可以解决这个问题:

  1. 检索原始行,修改相应字段,然后保存/更新。

  2. 限制更新的字段,可能是通过将要更新的字段作为参数传递给方法。

答案 1 :(得分:0)

对于某些项目,foreach循环中的$ value很可能没有设置(false或null或''),但无论如何都要将它添加到$ attribute_pairs数组中。然后在你的更新中你加入了它。可能最简单的事情就是这样:

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