Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Losowe wstawianie unikatowych liczb
Forum PHP.pl > Forum > Bazy danych
colargol
Jakim zapytaniem mogę wstawić rekord z losową liczbą (ale unikatową, czyli taką, która jeszcze nie była wstawiona w tym polu) do bazy MySQL? Liczba musi składac się z 6 cyfr.
Chodzi o to, aby każdy wpis do bazy miał niepowtarzalne ID i nie było to kolejne ID tylko losowe.
kajtek2008
  1. $rand = rand(100000,999999);
  2. .....
  3. SELECT * FROM .....
  4. .....
  5. if(!$tabela == $rand){
  6. ......
  7. INSERT INTO
  8. ....
  9. }
colargol
Cytat(kajtek2008 @ 14.02.2011, 16:17:49 ) *
  1. if(!$tabela == $rand){
  2. ......
  3. INSERT INTO
  4. ....
  5. }


a co w przypadku gdy $tabela == $rand? - wtedy nie wstawi nowego rekordu a powinien dodać nowey rekord z losową liczbą za każdym razem
kajtek2008
  1. elseif($tabela == $rand){
  2. $rand = rand(100000,999999);
  3. SELECT * FROM .....
  4. if(!$tabela == $rand){
  5. INSERT INTO
  6. }
  7. }
colargol
Cytat(kajtek2008 @ 14.02.2011, 18:10:55 ) *
  1. elseif($tabela == $rand){
  2. $rand = rand(100000,999999);
  3. SELECT * FROM .....
  4. if(!$tabela == $rand){
  5. INSERT INTO
  6. }
  7. }


ale to jest dobre rozwiązanie dla przypadku gdy pierwszy będzie się powtarzać a drugi (zmienna $rand powyżej) już nie, co zrobić aby działało dla każdego przypadku?
everth
Że tak się spytam - po cholerę ci takie rozwiązanie? Domyślam się że mówisz o kluczu głównym ale tu autoincrement sprawuje się w większości przypadków bez zarzutu. Jak naprawdę musisz rozrzucać klucze to zainteresuj UUID w powiązaniu z MySQL, będziesz miał większą szansę uniknięcia konfliktu (tylko że ono zajmuje 128b jak dobrze pamiętam) i obejdzie się bez wygibasów po stronie PHP czy MySQL.
colargol
Cytat(everth @ 15.02.2011, 15:07:06 ) *
Że tak się spytam - po cholerę ci takie rozwiązanie? Domyślam się że mówisz o kluczu głównym ale tu autoincrement sprawuje się w większości przypadków bez zarzutu.


Chodzi o to, żeby użytkownik nie miał dostępu do chronologi dodawania elementów na stronie i takie rozwiązanie to zapewnia
everth
Przeczytaj to dokładnie - to również znajdziesz rozwiązanie, bez wątpienie lepsze.
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.