Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
como resgatar o ID do insert que acabou de ser inserido, sem misturar com vários insert mesmo tempo
exemplo se 10 pessoas acabarão de fazer um insert mesmo tempo cada um tem q retornar seu id corretamente?
Considerando que esteja utilizando o MySQL, logo após o INSERT você coloca algo assim:
$idusuario = mysql_insert_id();
Se utilizar PDO:
$idusuario = $conn->lastInsertId();
Abraços.
INSERT INTO tabela (a,b,c) VALUES ('$a','$b','$c')
recuperando ultimo id
SELECT MAX(id) AS id FROM tabela
só fazer fetch array desse select max id ai e puxar indice ...Infelizmente Keven, sua solução sofre com um problema parecido com a Condição de Corrida (pra não falar o mesmo, pois ela trata de escalonamento de processos).
Pode funcionar em um determinado espaço de tempo, em sistemas com poucos acessos, mas o fator tempo x acesso irá causar uma falha. Pois o "estado compartilhado", dos processos, seria o último ID inserido no sistema. Uma vez que não se pode garantir que você realmente selecione o último ID antes que um novo seja inserido.
Presumindo que esteja usando MySQL, poderá utilizar a função, abaixo, da PDO.
http://php.net/manual/en/pdo.lastinsertid.php
Não funciona para todos os SGBDs, mas para o MySQL vai funcionar.
Outra solução é adaptar uma solução semelhante ao nextval do PostgreSQL através de funções no MySQL.
Emulating nextval() function to get sequence in MySQL
É uma boa solução, inclusive já utilizei para alguns sistemas. Vai depender de como modelou e do que deseja utilizar no seu sistema.