我有一个书表和一个状态列(位类型),在编辑我的书信息表时有3种情况。


如果书籍可用状态字段= true,
如果书籍不可用状态字段=否,
如果仅编辑书籍信息(状态字段除外),则应忽略MySQL表上的状态列


因此,对于第三种情况,如果未设置任何值,我必须忽略状态栏,我有什么办法可以做?请帮帮我

这是我的更新查询

$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']);

最佳答案

如果不想更新它,可以使用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()位,以确定您希望此逻辑如何发生。

关于php - 在mysql中更新时如何忽略列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50461235/

10-13 23:21