Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新mysql中的单个字段,同时在其他字段中保留其余值_Php_Mysql - Fatal编程技术网

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

Php 更新mysql中的单个字段,同时在其他字段中保留其余值,php,mysql,Php,Mysql,嗨,我正在尝试更新数据库中的一个字段,并将其余的值保留在其他字段中,但它会继续删除其余字段。。不知道我做错了什么?这里有一些代码 if(isset($_POST['submit_approve'])) { $comment = new Comment(); // $comment->author = $author; // $comment->blog_id = $blog_id; // $comment->body = $body; // $co

嗨,我正在尝试更新数据库中的一个字段,并将其余的值保留在其他字段中,但它会继续删除其余字段。。不知道我做错了什么?这里有一些代码

    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;
    }

有人能看出我哪里做错了吗?干杯有两种方法可以解决这个问题:

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

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


  • 对于某些项,foreach循环中最有可能的$value未设置(false、null或“”),但您正在将其添加到$attribute\u pairs数组中。然后,在你的更新中,你加入了所有这些。可能最简单的方法是这样:

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