У меня есть таблица книг и столбец статуса (тип бит), у меня есть три ситуации при редактировании моей информационной формы.
Итак, для третьей ситуации я должен игнорировать столбец статуса, если нет значения, установленного, есть ли способ, который я могу сделать? пожалуйста, помогите мне
Это мой запрос на обновление
$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()
чтобы определить, как вы хотите, чтобы эта логика произошла.
Попробуй это:
if(isset($data['status'])) {
$status = ', status = :status';
}
$this->db->query("UPDATE books SET book_title = :title, file_type = :file_type $status WHERE id = :id");
$this->db->bind(':title', $data['title']);
$this->db->bind(':file_type', $data['file_type']);
if(isset($data['status'])) {
$this->db->bind(':status', $data['availability']);
}
$this->db->bind(':id', $data['id']);
Просто проверьте $data['status']
если он не пуст, а затем объедините его в ваш запрос.
status = :status