当用户提交表单时,我发生了3个数据库操作。如果一个失败,我不希望它们中的任何一个执行。我目前的代码没有发生。例如,如果我故意在SQL查询中拼错,第二个查询将失败,但第一个查询将起作用,该记录将被更新。如何更改,如果一个失败,根本不对数据库进行任何更改?
public function editAccom($data)
{
$this->db->query("UPDATE `accommodation` SET `name` = :name, `description` = :description, `slug` = :slug WHERE `id` = :id LIMIT 1");
$this->db->bind(":name", $data['name']);
$this->db->bind(":id", $data['id']);
$this->db->bind(":description", $data['description']);
$this->db->bind(":slug", $data['slug']);
if($this->db->execute() === false) {
return false;
}
$this->db->query("DELETE FROM `accom_pics` WHERE `accom_id` = :id");
$this->db->bind(":id", $data['id']);
if($this->db->execute() === false) {
return false;
}
foreach($data['pics'] as $pic) {
$this->db->query("INSERT INTO `accom_pics` (`accom_id`, `pic_name`) VALUES (:accom_id, :pic_name)");
$this->db->bind(":accom_id", $data['id']);
$this->db->bind(":pic_name", $pic);
if($this->db->execute() === false) {
return false;
}
}
return true;
}