Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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.
Eu entendi ateh o comando mas como voce utilizou ele =D ???
>
Opá pessoal, valeu ai por terem lido e tal.
Eu deu uma procurada melhor e já encontrei a resposta pra minha dúvida se alguém precisar é isso aqui:
http://www.php.net/manual/pt_BR/function.mysql-insert-id.php
Abraços
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/](http://forum.imasters.com.br/public/style_emoticons/)default/thumbsup.gifMas 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?
>
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
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.
>
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
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
>
>
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
Opá pessoal, valeu ai por terem lido e tal.
Eu deu uma procurada melhor e já encontrei a resposta pra minha dúvida se alguém precisar é isso aqui:
http://www.php.net/manual/pt_BR/function.mysql-insert-id.php
Abraços