Ir para conteúdo

POWERED BY:

Arquivado

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

VBBurba

[Resolvido] Cadastro MySQL

Recommended Posts

Olá pessoal,Eu preciso cadastrar algumas informações e depois eu preciso usar o ID desse cadastro pra segunda etapa do cadastro que será feita em parte no mesmo registro e parte será feito em outra tabela.Minha duvida é: como que após fazer o cadastro eu selecione Exatamente o ID que acabei de cadastrar?Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fazendo um query que pegue o último id cadastrado, se você fizer uma tranzação fechada até o final você não corre o risco de pegar id errado.Da uma googlada sobre tranzações.Isso basicamente, faz um processo cercado, onde só sai desse cerco quando é finalizada a tranzação toda, evitando a entrada de dados externos no meio de sua tranzaão com o banco além de outras coisas.Exemplo de tranzação é os sistemas bancario, que se você tiver sacando um dinheiro e na hora de sair o dinheiro acabar a luz, o sistema não contabiliza a seu saque (ao menos não deveria fazer). Ou seja, só concretiza os dados se ouver finalização da tranzação.Outra forma é você cadastrar a primeira etapa numa variável de escopo persistente como Sessions, dae na segunda etapa, você cadastrar a primeira etapa, faz uma query abaixo do insert para pegar o id cadastrado e cadastra a segunda etapa. com esse novo ID, mas o correto era usar tranzação tbm nessa forma de uso. Ou seja tudo axo que se resume a usar tranzação para evitar erros.boa sorte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois da query do insert

 

faça isso

 

$query = mysql_query($sql) or die (mysql_error()); 
		  $idinfo = mysql_insert_id();

echo $idinfo;

Eu entendi ateh o comando mas como voce utilizou ele =D ???

UPDATE

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas como o graffdesign falou, o melhor é fazer isto através de uma transação. Pois pode ocorrer o seguinte:

Depois que você executar o primeiro insert e antes de você buscar o id gerado, se algum outro usuário executar um insert nesse exato momento você tera o id errado.

 

Com uma transação ajuda bastante pois o script sera testado e executado ao mesmo tempo.

Falando nisto, o mysql tem forey key? tem alguma forma de fazer isto com ele?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas como o graffdesign falou, o melhor é fazer isto através de uma transação. Pois pode ocorrer o seguinte:

Depois que você executar o primeiro insert e antes de você buscar o id gerado, se algum outro usuário executar um insert nesse exato momento você tera o id errado.

 

Com uma transação ajuda bastante pois o script sera testado e executado ao mesmo tempo.

Falando nisto, o mysql tem forey key? tem alguma forma de fazer isto com ele?

{TeRmInAtOr}

 

Eu tenho uma aplicação sobre o que voce disse amigo, que é cadastramento de fotos de produtos de varias empresas que usa o mesmo sistema.

 

Tipo assim o logista cadastra os dados do produto depois eu pego o id armazeno em uma sessao, ai ele tem a opção de inserir a foto do produto usando update em uma segunda página ou depois clicando no link do produto.

 

Corro este risco mesmo armazenado em uma sessão? pegar o id errado?

 

ja fiz varios teste e cada um pega seu id

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com certeza kra, ainda que a possibilidade seja remota, ela existe.

Basta um processo ficar no meio do outro que tu vai ter um id de outro usuário na sessão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas como o graffdesign falou, o melhor é fazer isto através de uma transação. Pois pode ocorrer o seguinte:

Depois que você executar o primeiro insert e antes de você buscar o id gerado, se algum outro usuário executar um insert nesse exato momento você tera o id errado.

 

Com uma transação ajuda bastante pois o script sera testado e executado ao mesmo tempo.

Falando nisto, o mysql tem forey key? tem alguma forma de fazer isto com ele?

Isso não ocorre, pois a função mysql_insert_id() pega o ultimo id que a SUA sessão/resource criou.

Tem um tópico falando sobre: http://forum.imasters.com.br/lofiversi...hp/t198792.html

 

Att,

Guilherme Oenning

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou faça um query que pegue sempre o ultimo id.

<?
$query = mysql_query ("SELECT id tabela ORDER BY id DESC")
$tabela = mysql_fetch_array ($query);
print $tabela[`id`];
?>

Ou simplismente pegue o MAX(id);

 

pode ser que resolva http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas como o graffdesign falou, o melhor é fazer isto através de uma transação. Pois pode ocorrer o seguinte:

Depois que você executar o primeiro insert e antes de você buscar o id gerado, se algum outro usuário executar um insert nesse exato momento você tera o id errado.

 

Com uma transação ajuda bastante pois o script sera testado e executado ao mesmo tempo.

Falando nisto, o mysql tem forey key? tem alguma forma de fazer isto com ele?

Isso não ocorre, pois a função mysql_insert_id() pega o ultimo id que a SUA sessão/resource criou.

Tem um tópico falando sobre: http://forum.imasters.com.br/lofiversi...hp/t198792.html

 

Att,

Guilherme Oenning

 

Valeu amigo minha dúvida foi esclarecida li todo o tópico e os links, vi que não existe a possibilidade mesmo que remota http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.