Как сохранить отрицательное значение ip2long в 32-битной системе для MySQL

Я должен хранить IP-адрес в таблице MySQL, работающей в 32-битной системе.

На 64-битной системе я бы просто использовал INT(10) UNSIGNED поскольку ip2long всегда будет абсолютным значением.

Как заставить его работать на 32 бит? У меня есть два варианта.

  1. Удалить UNSIGNED и хранить отрицательные значения, но я не уверен, если
    существует вероятность того, что значения будут слишком большими или слишком маленькими
    это сделано (потому что верхний предел будет уменьшен вдвое
    допустим, что нижний предел будет отрицательным)
  2. использование sprintf("%u",ip2long( $ip )) оформить заказ (будет, вероятно, медленнее, чем 1.)

Любые другие решения?

0

Решение

Вы можете попытаться преобразовать IP не в PHP, а в запросе вставки SQL, используя функцию INET_ATON. https://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton. Вы должны использовать INT UNSIGNED в качестве типа столбца.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]