我有一个插入查询(活动记录样式),用于将表单字段插入到MySQL表中。我想获取插入操作的最后一个自动递增的id作为查询的返回值,但是我有一些问题。
控制器内部:
function add_post(){
$post_data = array(
'id' => '',
'user_id' => '11330',
'content' => $this->input->post('poster_textarea'),
'date_time' => date("Y-m-d H:i:s"),
'status' => '1'
);
return $this->blog_model->add_post($post_data);
}
而内部模型:
function add_post($post_data){
$this->db->trans_start();
$this->db->insert('posts',$post_data);
$this->db->trans_complete();
return $this->db->insert_id();
}
作为模型中add_post的返回,我一无所获
尝试这个
function add_post($post_data){
$this->db->insert('posts', $post_data);
$insert_id = $this->db->insert_id();
return $insert_id;
}
如果有多次插入,您可以使用
$this->db->trans_start();
$this->db->trans_complete();
不需要使用交易。@Crowlix的答案更为简洁。
@Abraham如何进行并发插入?
@ShekharJoshi afaik insert_id()函数返回您正在使用的db对象执行的最后插入的id。这应该处理并发插入,不是吗?如果我错了,请纠正我。
Codeigniter如何知道特定对象添加了哪些行?
@ShekharJoshi这不是对象,CI的INSERT_ID()返回最后插入的ID为每MySQL的LAST_INSERT_ID() ,这使最后插入的ID在每个连接的基础。因此,最后插入的ID不需要事务。