php - mysql 更新时如何忽略某一列?

标签 php mysql

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

  1. 如果图书可用状态字段 = true,
  2. 如果图书不可用状态字段 = false,
  3. 如果只编辑除状态字段之外的书籍信息,则应忽略 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/

相关文章:

php - 将 MySQL 数据发布到 PHP 列中

sql - 如何将图像的位置存储在数据库中?

php - 如何防止查询结果出现 PHP Allowed Memory Size Fatal Error?

MySQL 通过 LIKE 和 AND 搜索

mysql - 与具有 EXIST 要求的 INNER JOIN 相反

Mysql 查询给出了两个表中相同的计数

php - 项目 'like' 这一项

javascript - 谷歌条形图中的单个条形颜色

php - 如何跳过 Wordpress 中相邻帖子的某些链接?

php - 在 PHP5 和 Actionscript3 中获取以毫秒为单位的 unix 时间戳