如何使用Codeigniter从最后插入的行中获取值

时间:2013-01-21 06:17:47

标签: codeigniter

是否有任何codeigniter功能来执行此操作?

9 个答案:

答案 0 :(得分:12)

试试这段代码:

$this->db->insert_id();

参见: https://www.codeigniter.com/user_guide/database/helpers.html

答案 1 :(得分:8)

没有特殊功能。但是你可以获得刚刚插入的行的id,然后获取它的数据:

$this->db->insert('table_name', $data);

$id = $this->db->insert_id();
$q = $this->db->get_where('table_name', array('id' => $id));
return $q->row();

答案 2 :(得分:2)

插入后使用Active Record方法。返回上次插入的id

function insert($data)
{
    $this->db->insert('tablename', $data);
    return $this->db->insert_id();
}

Here是参考

答案 3 :(得分:2)

我有给你的提示。如果要插入数据,请返回数据数组,然后进行编辑。

  public function set_alb_photos() {
     $data = array(
      'alp_title' => $this->input->post('alp_title'),
      'alp_file_location' => $this->input->post('alp_file_location'),
      'alp_album_id' => $this->input->get('alb_id'),
      'alp_created_at' => date("Y-m-d H:i:s"),
      'alp_updated_at' => date("Y-m-d H:i:s")
     );
     $this->db->insert('alb_photos', $data);
     return $data;
   }

我希望这有帮助。

答案 4 :(得分:1)

这将帮助您从表格中获取最后一行。

$last = $this->db->order_by('id',"desc")->limit(1)->get('tablename')->row();
    print_r($last);

答案 5 :(得分:1)

您可以通过以下代码获取插入的数据,

$query = $this->db->get_where('table1', array('id' => $id)); //get inserted data
return $query->result_array();

引用:https://www.codeigniter.com/user_guide/database/query_builder.html

答案 6 :(得分:0)

怎么样:

$this->db->get('mytable', 1,0)

答案 7 :(得分:0)

仅在有效的codeigniter记录下尝试此操作。这段代码为您提供了表格的最后一行。

$this->db->limit(1);
$this->db->order_by('id','desc');
$query = $this->db->get('tablename');
return $query->result_array();

答案 8 :(得分:0)

根据选项尝试此操作并返回:

$data = {} //your array;
// now if your $data array contained all the values of the new row just do this
function yourFunction(){
  // insert into array into db
  $this->db->insert('table_name', $data);
  // get created rows id
  $id = $this->db->insert_id();
  // update your $data array with the new generated id and return it
  $data['id'] = $id;
  return $data;
}


// Option 2: if row has fields that auto populates (example current timestamp)
function yourFunctionAlt(){
  // insert into array into db
  $this->db->insert('table_name', $data);
  // get created rows id
  $id = $this->db->insert_id();
  // get row as a array 
  $_rowArray = $this-db->get_where('table_name',array('id'=>$id)->row_array();
  return $_rowArray;
  // or get as a object
  $_Object = $this->db->get_where('table_name',array('id'=>$id);
  return $_Object;
}