在mysql中更新时如何忽略列?

时间:2018-05-22 06:34:36

标签: php mysql

我有一个书桌和状态栏(比特类型),我在编辑书籍信息表时有3种情况。

  1. 如果book available status field = true,
  2. 如果图书不可用状态字段= false,
  3. 如果仅编辑除状态字段之外的书籍信息,则应忽略MySQL表上的状态列,因为它是
  4. 因此对于第三种情况,如果没有设置值,我必须忽略状态列,我有什么办法吗?请帮帮我

    这是我的更新查询

    $this->db->query('UPDATE books SET book_title = :title, file_type = :file_type, status = :status WHERE id = :id');
    
        $this->db->bind(':title', $data['title']);
        $this->db->bind(':file_type', $data['file_type']);
        $this->db->bind(':status', $data['availability']);
        $this->db->bind(':id', $data['id']);
    

1 个答案:

答案 0 :(得分:1)

如果您不想更新状态,可以使用mysql的ifnull()并为状态传递null。我们的想法是,如果你传递null,你只需将值保留原样......

$this->db->query('UPDATE books 
                  SET book_title = :title, file_type = :file_type,
                      status = ifnull(:status,status) 
                  WHERE id = :id');

$this->db->bind(':title', $data['title']);
$this->db->bind(':file_type', $data['file_type']);
if () { // You want to set the value
    $this->db->bind(':status', $data['availability']);
}
else  { // leave value as is
    $this->db->bind(':status', null);
}
$this->db->bind(':id', $data['id']);

您需要完成if()位以确定您希望如何发生此逻辑。