Autor | Zpráva | ||
---|---|---|---|
Jaffoo Profil |
#1 · Zasláno: 8. 2. 2012, 16:19:53
Dobry den chcem sa spytat, akeho typu by mala byt ip v tabulke, aby sa dali vkladat ip4 a aj ip6 adresy, mohol by byt varchar(39) alebo odporucate nieco ine? a este moze byt iba ako primarny kluc ip adresa? kedze aj tak vyhladavat sa bude iba podla ip adresy vopred dakujem za odpovede
|
||
Kajman Profil |
#2 · Zasláno: 8. 2. 2012, 16:35:19
Jaffoo:
Ip4 bych převedl a uložil jako unsigned int. Obdobně by se dala převést Ip6 na bigint. Pokud ukládáte oboje v jednom řádku, tak do dvou sloupců (ip4,ip6), pokud jednu verzi, tak ji plus příznak v druhém sloupci, zda se jedná o ip4 nebo ip6 (stačí tinyint). S takto uloženými čísly se totiž lépe bude pracovat při dotazech na rozsahy (masky) a velikost uložených dat bude menší než u stringu. „moze byt iba ako primarny kluc ip adresa?“ Může (pokud to dává smysl). |
||
Jaffoo Profil |
#3 · Zasláno: 8. 2. 2012, 16:54:58
No ono chcem spravit pocitadlo nastev, a chcem ukladat ip, pocet_nastev, datum a vkladat to pomocou insert into on duplicate key, kde ak neexistuje tak sa vlozi, inak sa updatne pocet = pocet + 1 a cas na now() ale update sa vykona iba ak datum < now() - INTERVAL 1 HOUR a tu nastava problem lebo to musi byt unikatne id, cize by som to mohol spravit zvlast tabulku kde by sa ukladali ip4 a zvlast tabulku na ulozenie ip6 a potom select by bol len sucet dvoch SUM(pocet) z oboch tabuliek, len ako rozslisit v php ze sa jedna o ip4 alebo ip6?
|
||
Kajman Profil |
#4 · Zasláno: 8. 2. 2012, 17:04:04
Pro tento účel to asi ani není potřeba rozlišovat. IP na číslo si můžete převést už v php.
|
||
Kajman Profil |
#5 · Zasláno: 8. 2. 2012, 17:06:49
Aha, ale tam to vrací 128bitů, to se do bigintu nevejde. Tak si uložte string a je to :-)
|
||
Jaffoo Profil |
#6 · Zasláno: 8. 2. 2012, 17:15:05 · Upravil/a: Jaffoo
No to by mohlo ist, teda prevediem na cislo ip adresy cez tu funkciu a ulozim to databazy ale ten stlpec s ip bude bigint, alebo unsigned bigint?
som si az teraz precital to nove co ste pridali, teda varchar(39) spravne? :) |
||
Časová prodleva: 11 let
|
0