mysql事务没有提交Codeigniter 3

时间:2016-12-20 17:05:25

标签: php mysql codeigniter-3

模型很简单我需要从表中删除2行,parcelas表在删除的级联上有外键,关联表没有外键

控制器

  if($this->delete_model->delete_parcela_model($this->input->post('id_parcela_delete'),$this->input->post('id_loteo_delete'),$this->input->post('id_user_delete')))
        {
            echo 'deleted';
            exit(1);

        }
        else
        {
            echo 'error';
            exit(1);

        }

并且模型中的函数调用是

function delete_parcela_model($id_parcela,$id_pago,$id_user)
{

    $this->db->trans_begin();
    $this->db->query('delete from parcela where id_parcela = "'.$id_parcela.'" and id_dueno = "'.$id_user.'"');
    $this->db->query('delete from es_dueno_assoc where tipo_dueno_id = "'.$id_parcela.'" and user_id = "'.$id_user.'"');


    if ($this->db->trans_status() === FALSE)
    {
        // generate an error... or use the log_message() function to log your error
        $this->db->trans_rollback();
        return false;
    }
    else
    {
        $this->db->trans_commit();
        return true;

    }

总是返回true但事务未被提交....

1 个答案:

答案 0 :(得分:0)

我不确定为什么trans_status()没有返回,但我会使用Codeigniter数据库助手中的内置帮助器,我们可以尝试进行故障排除:

$this->db->delete($this->tables['parcela'], array("id_parcela" => $id_parcela, "id_dueno" => $id_user));

然后你可以通过添加一些日志记录来测试这个,这样你就可以看到$ this-> db-> affected_rows()正在输出:

var_dump($this->db->affected_rows());
var_dump($this->db->affected_rows() === FALSE);
die();

然后你可以尝试获得正确的价值。另请查看this页面以获取更多详细信息。