Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

PauloRJ

Pegar ID antes de efetuar o INSERT

Recommended Posts

Fala povo!

 

estou desenvolvendo um sistema no qual tenho q saber o ID do registro autoincrement para poder codificar em MD5 e inserir o ID em 2 colunas. Uma em MD5 e uma Normal.

 

 

quem puder me ajudar,

 

grande abraço!

 

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

é alguma coisa assim que você precisa:

 

$consulta = mysql_query("SELECT max(ID) as max_id from clientes");$linhas = mysql_fetch_array($consulta);$prox_id = $linhas['max_id'] + 1;
ou mais fácil, pode usar o mysql_insert_id -> Retorna o ID da última cláusula INSERT executada

 

leia este artigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

desse jeito que voce pois fazendo um select para pegar ultimo id acho que pode dar problema nao? pq se alguem inserir um id antes de você fazer a consulta vai pegar o 1 id para frete e nao oque você queria pelo mysql_insert_id() ele pega pelo ultimo id daquela conexao.tudo depende para que você vai querer pegar id

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode sim, mas depende para que ele vai usar, se o sistema estiver um grande de quantidade de usuário fazendo um cadastro, pode dar problema, mas se for algo mais sucegado, ai de boa... por isso qualquer coisa como você disse e eu tb, pode - se usar a função mysql_insert_id.... =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim david, eu tinha feito uma consulta parapega ro ultimo id tambem

 

achei que tinha alguma comando direto para pegar o proximo ID autoincrement livre, mas acho q nao tem beleza.

 

 

valeu a força!!!

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cuidado que os 2 podem dar problema: tanto com o select ou o mysql_insert_id, caso você traga o resultado para a página para usá-lo depois pode ocorrer o problema de alguem inserir alguma coisa nesse meio tempo pq a informação da sua página vai estar desatualizada.A melhor forma é no comando sql você já pegar o ultimo valor e usa-lo, sem pegar o valor pelo php, assim você garante que não vai ter problema com isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou usar na hora

 

$bd  = new MySQL;$sql = "INSERT INTO tipo (tipo) VALUES ('$tipo')";$bd->query($sql);$registro  = mysql_insert_id(); // resgata nº ID da query executada$registro2 = md5($registro); // gera o ID em criptografia$bd4 = new MySQL;$sql4 = "UPDATE tipo SET id_tipo = '$registro2' WHERE id = '$registro'";$bd4->query($sql4);

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cuidado que os 2 podem dar problema: tanto com o select ou o mysql_insert_id, caso você traga o resultado para a página para usá-lo depois pode ocorrer o problema de alguem inserir alguma coisa nesse meio tempo pq a informação da sua página vai estar desatualizada.A melhor forma é no comando sql você já pegar o ultimo valor e usa-lo, sem pegar o valor pelo php, assim você garante que não vai ter problema com isso

nao tem perigo nao mysql_insert_id() (segundo manual do mysql) o proprio banco controla isso de pegar o ultimo id daquela conexao mesmo alguem inserindo depois vai continuar sendo o ultimo id que sua conexao inseriu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Descriçãoint mysql_insert_id ( [resource link_identifier] )Obtém o ID gerado para uma coluna AUTO_INCREMENT pela consulta INSERT anterior. Parâmetroslink_identifierA 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 E_WARNING é gerado.Valores de retornadoO ID gerado para uma coluna AUTO_INCREMENT pela consulta INSERT anterior em caso de sucesso, 0 se a consulta anterior não gerou um valor AUTO_INCREMENT, ou FALSE se não foi estabelecida a conexão com o MySQL.

Pelo que entendi nesse trecho do Manual ai, se não for especificado nada no "link_identifier", ele vai pegar o id da ultima conexão feita por mysql_connect(), ou seja, se nesse meio tempo que você vá pegar o id e alguém inserir, vai pegar o id do outro caboclo lá hein....

Compartilhar este post


Link para o post
Compartilhar em outros sites

LAST_INSERT_ID()mysql_insert_id()Assim está no manual:O último ID que foi gerado e mantido no servidor em uma base por conexão. Isto significa que o valor que a função retona para um dado cliente é o valor AUTO_INCREMENT gerado mais recentemente por aquele cliente. O valor não pode ser afetado pelos outros clientes, mesmo se eles gerarem um valor AUTO_INCREMENT deles mesmos. Este comportamento assegura que você pode recuperar seu próprio ID sem se preocupar com a atividade de outros clientes e sem precisar de locks ou transações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.