从数据库创建并获取新 ID 但尚未提交 CodeIgniter

Create and Get the New ID from DB but not commited yet CodeIgniter

在 CodeIgniter 中,

是否可以创建事务(尚未提交)并获取ID,并进行if语句,如果语句true,那么它会committed

不同的函数可以得到相同的交易?

例如:

$newID = $this->model->create();

if(!empty($newID)) {
      $this->model->commit();
}else{
     // cancel commit;
}

您可以尝试运行 手动交易

可以如下:

$this->db->trans_begin();

$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');

if ($this->db->trans_status() === FALSE)
{
    $this->db->trans_rollback();
}
else
{
    $this->db->trans_commit();
}

阅读docs了解更多信息。

Josua 你可以在你的模型中做这些事情,而不是从你的控制器调用模型。

table结构

控制器

function index(){
    $this->load->model('mtest');
    $this->mtest->do_your_transaction();
}

型号mtest.php

class mtest extends CI_Model
{
   function do_your_transaction()
   {
       $this->db->trans_start();
       $id = $this->insert_query();
       $this->update_query_using($id);
       $this->db->trans_complete();

       if($this->db->trans_status() === FALSE ) {
        // do something falsy
       }
       else { /* do something if true. */   }
   }

   function insert_query()
   {
       $this->db->insert('tbl', array('name1' => "hoho", 'name2' => "yohoho", "count"=>0));
       return $this->db->insert_id(); /* return last inserted. */
   }

   function update_query_using($id)
   {
       $this->db->where('id', $id)->update('tbl', array("count" => 100));
   }
} // end of mtest class

如果你尝试执行两次,它只会插入第一次插入和更新。