Я должен хранить IP-адрес в таблице MySQL, работающей в 32-битной системе.
На 64-битной системе я бы просто использовал INT(10) UNSIGNED
поскольку ip2long
всегда будет абсолютным значением.
Как заставить его работать на 32 бит? У меня есть два варианта.
UNSIGNED
и хранить отрицательные значения, но я не уверен, еслиsprintf("%u",ip2long( $ip ))
оформить заказ (будет, вероятно, медленнее, чем 1.)Любые другие решения?
Вы можете попытаться преобразовать IP не в PHP, а в запросе вставки SQL, используя функцию INET_ATON. https://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton. Вы должны использовать INT UNSIGNED в качестве типа столбца.
Других решений пока нет …