【发布时间】:2017-09-10 21:08:22
【问题描述】:
我的模型中有这个函数应该在一个事务中运行两个查询,但更新查询不起作用。
public function delete($id = null)
{
if($id) {
$delete = "DELETE FROM borrowed_books
WHERE id = '$id'; ";
$mod="UPDATE `books` b
INNER JOIN `borrowed_books` a
SET b.nr_copies=b.nr_copies+1
WHERE b.id_book=a.id_book AND a.id = '$id'; ";
$this->db->trans_start();
$this->db->query($delete);
$this->db->query($mod);
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE) {
return false;
} else {
return true;
}
}
}
【问题讨论】:
-
除了@Brian Gottier 的回答,我建议完全删除“删除”部分,只使用“更新”。另外使用 CI 表示法:例如
$this->db->where('id', $id); $this->db->update('books', array('due-date' => 'a date'));你似乎也有一个多余的 idid_book,为什么不只是id?在您的记录中有一个名为due-date或其他内容的附加字段,如果该字段为空,则表示尚未借用... KISS 原则 -
@eli 如果你遇到一些错误,那么只有
trans_status()通过错误但在update查询中没有错误,所以如果条件匹配,我将删除记录 n 更新记录。
标签: php codeigniter