Są prawie takie same. ip2long czasami zwraca wartość ujemną, ponieważ PHP używa liczb ze znakiem do wyceny, podczas gdy MySQL używa liczb bez znaku.
Oba są oceniane jako x*(2^24) + y*(2^16) + z*(2^8) + w*(2^0)
, ale w PHP, ze względu na długi czas podpisywania, pokaże wartości ujemne dla niektórych adresów IP.
For signed long, the range is
(2^31) - 1 = −2,147,483,648 to +2,147,483,647
Tak więc adresy podczas tłumaczenia na ponad +2147483647 zostaną zawinięte i dadzą wartości ujemne.
ip2long("254.254.254.254"); // -16843010
Ten link opisuje to szczegółowo.