CodeIgniter activerecord, recuperar o último ID de inserção?

153

Existem opções para obter o último ID de inserção de um novo registro no CodeIgniter?

$last_id = $this->db->insert('tablename',
    array('firstcolumn' => 'value',
    'secondcolumn' => 'value')
);

Considerando a tabela, consista nos campos id (incremento automático) firstcolumn e secondcolumn.

Dessa forma, você pode usar o ID de inserção no código a seguir.

Dennis Decoene
fonte
4
Eu mantenho essa pergunta várias vezes. Muito obrigado!
giripp

Respostas:

277

Que vergonha...

Eu olhei para o guia do usuário e a primeira função é$this->db->insert_id();

Isso também funciona com inserções de registros de activer ...

EDIT: eu atualizei o link

Dennis Decoene
fonte
29
o guia do usuário é seu melhor amigo para coisas assim. Eu tenho usado o codeigniter por mais de 2 anos e ainda encontro funções como essa que eu nunca soube.
quer
8
Certifique-se de envolver sua inserção e esta função em uma transação como o programador consulta pode inserir outro objeto antes de executar esta função
parker.sikand
3
link está morto, link atualizado: ellislab.com/codeigniter/user-guide/database/helpers.html
womd
Preciso usar insert_id (), mas não sei se o insert_id () concedido para obter o ID pertence ao insert () antes dele! Quero dizer, é possível recuperar o ID pertencente a outro insert () em outra solicitação?
NM
37

O último código de inserção significa que você pode inserir o código de incremento automático inserido usando esse método no registro ativo,

$this->db->insert_id() 
// it can be return insert id it is 
// similar to the mysql_insert_id in core PHP

Você pode consultar este link, pode encontrar mais algumas coisas.

Informações da execução de uma consulta

Raja Ram T
fonte
o link não está correto. corrija o link. novo link codeigniter.com/userguide3/database/helpers.html
Shaiful Islam
11

para tabela específica, você não pode usar $ this-> db-> insert_id (). mesmo a última inserção aconteceu há muito tempo, pode ser buscada assim. pode estar errado. mas funcionando bem para mim

     $this->db->select_max('{primary key}');
     $result= $this->db->get('{table}')->row_array();
     echo $result['{primary key}'];
Rosario infantil
fonte
8

Lista de detalhes que ajuda na solicitação de identificação e consultas são

Para buscar o último ID inserido: isso buscará os últimos registros da tabela

$this->db->insert_id(); 

Buscando consulta SQL adicione isso após solicitação modal

$this->db->last_query()
Madhur
fonte
6

$this->db->insert_id();

Tente isso Como sua pergunta desejada.

Akash Tyagi
fonte
6

Após sua consulta de inserção, use este comando $this->db->insert_id();para retornar o último ID inserido.

Por exemplo:

$this->db->insert('Your_tablename', $your_data);

$last_id =  $this->db->insert_id();

echo $last_id // assume that the last id from the table is 1, after the insert query this value will be 2.
Nikkolai Fernandez
fonte
5

Tente isso.

public function insert_data_function($your_data)
{
    $this->db->insert("your_table",$your_data);
    $last_id = $this->db->insert_id();
    return $last_id;
}
Raham
fonte
@Dennis Decoene, você também pode visitar este link ellislab.com/codeIgniter/user-guide .
Raham 24/02
3
$this->db->insert_id();

Retorna o número de ID da inserção ao executar inserções no banco de dados

Métodos auxiliares de consulta para codeigniter-3

Shaiful Islam
fonte
2
$this->db->insert_id()  

// por favor tente isso

Girish Ninama
fonte
Essa resposta duplicada não agrega novo valor à página. Deve ser removido.
Mckmackusa 10/05/19
1
if($this->db->insert('Your_tablename', $your_data)) {
    return $this->db->insert_id();
}
return false 
Nakendra Pun
fonte
0

No codeigniter 3, você pode fazer o seguinte:

if($this->db->insert("table_name",$table_data)) {
    $inserted_id = $this->db->insert_id();
    return $inserted_id;
}

Você pode obter ajuda para o Codeigniter 3 aqui https://codeigniter.com/user_guide/database/helpers.html

No Codeigniter 4, você pode obter o último ID inserido da seguinte maneira:

$builder = $db->table("your table name");
if($builder->insert($table_data)) {
    $inserted_id = $db->insertID();
    return $inserted_id;
}

Você pode obter ajuda para o Codeigniter 4 aqui https://codeigniter4.github.io/userguide/database/helpers.html

Towsif
fonte