Autor Zpráva
Jaffoo
Profil
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
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
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
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
Aha, ale tam to vrací 128bitů, to se do bigintu nevejde. Tak si uložte string a je to :-)
Jaffoo
Profil
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? :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: