Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]ID następnego rekordu, który powstanie
VippeR
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 14.10.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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.
Go to the top of the page
+Quote Post
VippeR
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 14.10.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
batman
post
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




No to musisz użyć dwóch zapytań.
1. select max(id) from tabela
2. Twoje zapytanie.
Go to the top of the page
+Quote Post
VippeR
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 14.10.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
batman
post
Post #6





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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.
Go to the top of the page
+Quote Post
VippeR
post
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 14.10.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
batman
post
Post #8





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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.
Go to the top of the page
+Quote Post
phpion
post
Post #9





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.

Ten post edytował phpion 14.10.2008, 20:02:28
Go to the top of the page
+Quote Post
drPayton
post
Post #10





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
batman
post
Post #11





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 01:13