Jump to content
php.lv forumi

Recommended Posts

Posted

Respektīvi, ir nosacīta apmeklētāju skaitīšanas sistēma - tiek reģistrēts laiks un IP. Ja šie lielumi sakrīt, tad otrreiz ieraksts pievienots netiek. Datuma pievienošana notiek ar NOW() (lauks ir DATE) un Ip tiek pārvērsts ar INET_ATON palīdzību. Ip iegūta ar $_SERVER['REMOTE_ADDR']. Tomēr, visā tajā slēpjas kāds bugs, jo vienā un tajā pašā dienā vairākkārtīgi IP laukā tiek pievienots ieraksts 2147483647. Pats lauks datubāzē ir noformēts kā INT. Būtu interesanti uzzināt kāpēc tā notiek?

Posted (edited)

ja tu gribi unikālu lauku, tad uztaisi PrimKey/UniqKey.. un lieki nečakarējies.

Edited by Delfins
Posted (edited)

IP citā dienā var atkārtoties. Turklāt, tīri interesē, kāpēc tā. :)

Edited by niko
Posted

Varbūt vēl izveido varchar lauku, kur pieglabā IP adresi, kāda tā pa īstam izskatās ? Tādā veidā varbūt kaut kas skaidrāks paliks.

 

PS. 2147483647 ir 127.255.255.255 . Tas kaut kā neizskatās normāli.

Posted (edited)
IP citā dienā var atkārtoties.

 

Ak jēl... UNIQUE_KEY {IP,DATE}

 

Starp citu (1), uzliec tipu laukam INT_UNSIGNED (2 lielāks cipars ielīdīs)

Starp citu (2), MYSQL ir tips BIGINT, kurš glabā ciparu kā stringu.. bet perversijām programmā ar tipu konvertāciju

Edited by Delfins
Posted

Vai tik IP nav SIGNED INT lauks? Tādējādi liekot "lielas" IP adreses >=128.0.0.0 tāds integers >=0x80000000 nelien signed tipā, tāpēc MySQL ieliek maksimālo signed intu kāds iespējams - 0x7FFFFFFF = 127.255.255.255 = 2147483647.

Posted

Paldies visiem par padomiem, iepazinos gan ar signed/unsigned integeriem, gan, pēc Deflina izsauciena, ar steigu apskatīšu arī KEY`u fiškas. :)

×
×
  • Create New...