Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]ID następnego rekordu, który powstanie
Forum PHP.pl > Forum > Przedszkole
VippeR
Witam,
jestem nowy tu, więc wybaczcie niewiedzę na temat funkcjonowania forum.
Mój problem polega na tym, że potrzebuję poznać numer id który zostanie przydzielony do następnego rekordu.

Szukam po Google'ach, ale tam jest tylko o największym id, a więc nie to, co mnie interesuje.

Mam 3 rekordy o id kolejno 1, 2, 3. Jeżeli teraz dodam rekord, to jego id będzie równe 4. Ale jeżeli usunę rekord 3, to kolejny nowo dodany rekord będzie miał również id równe 4. I ja właśnie potrzebuję wyciągnąć tę "czwórkę", która jeszcze nie powstała, a dopiero powstanie.

Z góry dzięki za pomoc.
batman
Jeśli pracujesz na bazie MySQL, to pomoże Ci funkcja mysql_last_id, jeśli na postgresie to sprawdź funkcję pg_last_oid.
A jeśli nie ustawiłeś w tabeli autoinkrementacji, to zrób to i nie będziesz musiał martwić się o następne id.

P.S.
Przenoszę na przedszkole i dodaję tag do tematu.
VippeR
Pracuję na MySQL. Funkcja, którą podałeś, nie spełni zadania w tym wypadku ponieważ muszę najpierw dodać rekord. A ja chcę poznać id tego rekordu zanim on jeszcze zostanie dodany.

Mam auto_increment'a.
batman
No to musisz użyć dwóch zapytań.
1. select max(id) from tabela
2. Twoje zapytanie.
VippeR
Nie rozumiesz mnie.
Mam tabele:

id | pole |
--+-----+
1 | bla |
--+-----+
2 | ble |
--+-----+

Jeżeli użyję funkcji max id to dodając 1 do otrzymanego wyniku otrzymam id rekordu, który zostanie dodany (czyli 3 rekordu).


A teraz:

id | pole |
--+-----+
1 | bla |
--+-----+
2 | ble |
--+-----+

Dodałem rekord 3 (czyli id=3) ale go usunąłem. Potem znowu dodałem rekord, lecz teraz id równa się 4, a nie 3 (pomimo, że 3 został usunięty). Przy max id nie otrzymam numeru id rekordu, który zostanie dodany w przyszłości, a jedynie numer id rekordu o największym id.
batman
Nie widzę problemu. Skoro usunąłeś wiersz o id=3, a następnie ponownie go dodasz, to nic się nie stanie, tzn nie pojawi się błąd.
Ale jeśli nadal się upierasz, że potrzebujesz pobrać nowe id, to musisz poszukać w dokumentacji MySQL-a i sprawdzić, jak odpytać bazę, by zwróciło Ci aktualną wersję auto_increment. Niestety nie pomogę w tym, ponieważ nie używam MySQL-a.

edit
Poszukałem na google i znalazłem takie coś. Nie wiem, czy działa.
VippeR
numer id jest mi potrzebny do zapisu plikow, widac nie skumales

najwazniejsze jest to, ze jezeli usune wietrsz o id 3 to po ponownym dodaniu jego id bedzie mialo 4

i potrzebuje wiedziec jakie id bedzie mial rekord ktory dodam (w przyszlosci)

mialam nadzieje ze tutaj znajde rozwiazanie, no ale coz...
w kazdym razie dzieki za zainteresowanie
batman
Na prawdę nie rozumiem po co tak sobie utrudniać życie.
Sprawdź linka w moim poprzednim poście. Może o to Ci chodzi. Jeśli nie, to nie ma sposobu pobrania następnej wartości pola.
phpion
Sprawdź to:
http://www.bram.us/2008/07/30/mysql-get-ne...-fromfor-table/
Wygląda obiecująco *.

* zapewniam, że działa poprawnie - przed chwilą sprawdziłem.
drPayton
Cytat(batman @ 14.10.2008, 19:52:58 ) *
Nie widzę problemu. Skoro usunąłeś wiersz o id=3, a następnie ponownie go dodasz, to nic się nie stanie, tzn nie pojawi się błąd.
(...)


A spójność?
No wiesz? Po kimś początkującym tobym mógł się tego spodziewać, ale po Tobie? tongue.gif
batman
Cytat
No wiesz? Po kimś początkującym tobym mógł się tego spodziewać, ale po Tobie?
Autorowi najwyraźniej nie zależy o integralności danych, więc nawet o tym nie wspomniałem.
Jeśli miałbym w każdym przypadku opisywać zagadnienia związane z danym tematem, to musiałbym pisać eseje na kilka stron winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.