Mysql
#1
Posted 30/09/2004, 17:42
eu to querendo montar uma tabela aqui que um campo vai precisar ter o numero do campo autoincremente desta mesma tabela.
Como faço isso no php?
#2
Posted 30/09/2004, 18:05
select max(id) from tabela
ele retornará o maior numero do campo auto incremento o próximo é só fazer + 1
#3
Posted 30/09/2004, 18:07
SELECT (LAST_INSERT_ID()+1) AS proximo_id FROM tabela LIMIT 1
Mero mortal!
#4
Posted 30/09/2004, 18:18
#5
Posted 30/09/2004, 18:21
Mero mortal!
#6
Posted 30/09/2004, 18:22
#7
Posted 30/09/2004, 18:34
Demostrando algumas falhas possiveis:
COMANDO 1
SELECT (MAX(id)+1) AS proximo_id FROM tabela
COMANDO 2
SELECT (LAST_INSERT_ID()+1) AS proximo_id FROM tabela LIMIT 1
CREATE TABLE tabela ( id INT (3) UNSIGNED DEFAULT '0' AUTO_INCREMENT, nome VARCHAR (50), PRIMARY KEY(id) ) INSERT tabela (nome) VALUES ('Joao') INSERT tabela (nome) VALUES ('Maria') INSERT tabela (nome) VALUES ('Jose') // neste momento estamos no ID 3 // Executando COMANDO 1, retorna 4 // Execurando COMANDO 2, retorna 4 DELETE FROM tabela WHERE id=2 // neste momento continuamos no ID 3 // Executando COMANDO 1, retorna 4 // Execurando COMANDO 2, retorna 4 DELETE FROM tabela WHERE id=3 // neste momento continuamos no ID 3 // Executando COMANDO 1, retorna 2 // Execurando COMANDO 2, retorna 4 INSERT tabela (nome) VALUES ('Felipe') INSERT tabela (nome) VALUES ('Ana') // neste momento estamos no ID 5 // Executando COMANDO 1, retorna 6 // Execurando COMANDO 2, retorna 6 DELETE FROM tabela WHERE id in (4,5) // neste momento continuamos no ID 5 // Executando COMANDO 1, retorna 2 // Execurando COMANDO 2, retorna 6 DELETE FROM tabela //(apagando todos os registros) // neste momento continuamos no ID 5 // Executando COMANDO 1, retorna ??? // Execurando COMANDO 2, retorna 6
ps.: Pode ser que eu tenha cometido algum equivoco com os numeros no exemplo anterior, mas a idéia e o resultado são verdadeiros.
obs.: Verifiquei que, nos testes, é necessário que exista, pelo menos, 1 registro na tabela para que a solução faça efeito, se estiver zerada, ele tras resultado nulo. Sendo assim, o último exemplo não funciona como esperado, quando são apagados todos os registros da tabela.
Edição feita por: Prog, 30/09/2004, 18:42.
Mero mortal!
#8
Posted 30/09/2004, 19:28
Muito obrigado mesmo cara eu tava atras disso faz um tempão cara
Valeu mesmo
e magnum eu tava usando este seu método porém quando eu deletava o último campo da tabela ele pegava o numero do campo q foi apagado e não do proximo id que teriamos.
Muito obrigado!
#9
Posted 30/09/2004, 19:31
#10
Posted 30/09/2004, 19:58
Agora como eu faço pra pegar o resultado desta consulta?
$sql="SELECT (LAST_INSERT_ID()+1) AS proximo_id FROM tabela LIMIT 1";
$query=mysql_query($sql);
eu normalmente uso mysql_fetch_array pra pegar resultados mas neste caso eu não sei como pegar pois não tem o nome do campo e eu não aprendi ainda este tal de AS no select.
Valeu a ajuda ai
#11
Posted 30/09/2004, 20:03
#12
Posted 30/09/2004, 20:18
este as "cria" um campo virtual na tabela, pode fazer normalmente o mysql_fetch_array e usar proximo_id como nome do campo.
Ae Valeu mesmo magnum e desculpa ai eu so meio cabaço mas to estudando pacas eu não encontrava essa porcaria no manual do mysql agora com a ajuda de vocês vo continua mandando bala nos estudos!!!
Valeu se precisar tamos ai!!!
#14
Posted 16/02/2005, 22:49
$query=mysql_query($sql);
isso estaria correto????
Edição feita por: andrearruda, 16/02/2005, 22:57.
Em casa de Saci, calça da pra dois!!!
//---------------------
#15
Posted 16/02/2005, 22:57
assim tbem da
<?
$sql = mysql_query("select from tabela order by id desc limit 1");
while($campo = mysql_fetch_array($sql)){
$total = $campo[id]+1;
echo"o proximo id auto incrementado e ".$total."";
}
?>
é uma forma simples mais funcional e d efacil intendimento...
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)