Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Błąd zapytań w tym samym czasie
shycat
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 1
Dołączył: 25.02.2008

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


Witam, mam takie dwie tabele w bazie danych:


tabela "dane"
ilsoc_userow int
...

tabela "uzytkownicy"
id_usera int (PRIMARY KEY)
....


Podczas zakladania nowego konta (wpis przez INSERT) calosc dziala w ten sposob:

pobierz ilosc userow -> $ilosc=ilosc_userow+1 -> zapisz ilosc userow w "dane" -> utworz przez INSERT wpis w "uzytkownicy" gdzie "id_usera"=$ilosc


no i wszystko byloby cacy, gdyby nie to, ze jezeli 2-ch uzytkownikow zalozy konto w tej samej sekundzie to jeden wpis robi sie poprawnie, a drugi jest pusty (wpis bez zadnych danych)


Jak mozna temu zaradzic?


--------------------
Pomogłem? Kilknij "Pomógł"
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Kolumna id_usera powinna zwiększać się automatycznie. Ilość user-ów ma niewiele (a na pewno nie powinna mieć nic) wspólnego z ich identyfikatorami. System jest źle zaprojektowany.

EDIT
Liczbę user-ów (bez tych, którzy np. konto usuną) można pobrać zawsze:
  1. SELECT COUNT(`id_usera`) FROM `uzytkownicy`

Gwoli wyjaśnienia. Załóżmy, że w systemie masz 5 użytkowników:
id nazwa
1 user1
2 user2
3 user3
4 user4
5 user5
W takim wypadku w tabeli dane ilosc_userow jest równa 5.
Załóżmy, że użytkownik 1 usunie konto. Wtedy ilosc_userow jest równa 4. Dodanie nowego usera powoduje, że ilosc_userow znowu się zwiększa do 5, ale w bazie danych jest już użytkownik o id 5 i nie można dodać takiego użytkownika. Nic z tym nie zrobisz, po prostu system jest źle zaprojektowany.

Ten post edytował mortus 7.09.2011, 17:22:02
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 22.08.2025 - 02:48