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.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo