Função mysql_insert_id: Recuperando id do mysql no PHP

Veja neste artigo como recuperar dinamicamente o id(auto incremento) do banco de dados mysql no PHP

    Quando se trabalha com PHP e MySQL, é muito comum a necessidade de recuperar o valor de uma chave primaria, que geralmente é denominada de ID e quase sempre é auto incremento. Se um valor é auto incremento, desta forma não é possível descobrir no momento o valor que foi gerado pelo banco de dados. Quando se trabalha com uma aplicação "single", onde somente existe um único Client ou geralmente o Client e o Server são o mesmo, é possível(e muito utilizado), buscar o último registro da tabela que foi realizado a inserção do registro. O famoso "ORDER BY DESC ID" em conjunto com um "LIMIT 0,1" por exemplo, iria resolver este problema.

    Mas quando falamos de aplicações WEB, o número de Client podem ser ilimitados e com isso a lógica abordado acima é muito arriscada de ser aplicada, principalmente em um Portal, onde pode haver "N" comandos INSERT no banco.

    Para resolver este problema, é possível utilizar a função mysql_insert_id. Esta função retorna um ID gerado pela conexão.Com isso é importante, sempre recuperar apos o execução da query no banco. O mesmo recebe como parâmetro o link que indentifica a conexão com o banco de dados. Vale ressaltar a nota oficial do PHP.NET.

    link_identifier

    A conexão MySQL. se o identificador de conexão não for especificado, a ultima conexão aberta por mysql_connect() é assumida. Se uma conexão assim não for encontrada, ela irá tentar criar uma como se a função mysql_connect() fosse chamada sem argumentos. Se uma conexão não for encontrada ou estabelecida, um aviso de nível de erro E_WARNING é gerado.

    Corpo da função:

     int mysql_insert_id ([ resource $link_identifier ] )

    Exemplo:

     <?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Erro na conexão: ' . mysql_error()); } mysql_select_db('mydb'); mysql_query("INSERT INTO mytable (product) values ('kossu')"); printf(ID inserido = %d\n", mysql_insert_id()); ?>

    É importante salientar, o que o próprio manual PHP, cita:

    Nota 1:

    Devido a mysql_insert_id() agir sobre a última consulta realizada, tenha certeza de chamar mysql_insert_id() imediatamente após a consulta que gerou o valor.

    Nota 2:

    O valor da função SQL do MySQL LAST_INSERT_ID() sempre contém o valor AUTO_INCREMENT mais recentemente gerado, e não é reiniciado entre as consultas.

    O MySQL gerencia os auto incremento, salvando em uma tabela onde na mesma é citada a tabela e a próxima posição do registro. Desta forma você também poderia gerenciar/controlar esta arquitetura de outra forma.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados