¿Cuál es el tipo de campo correcto para la dirección IP en mysql? y ¿cuál es la forma correcta de almacenarlo utilizando PHP?Almacenamiento de direcciones IP en la base de datos MySQL usando PHP
Respuesta
En general, usted puede ir con VARCHAR (45), ya que será el tiempo suficiente para incluso almacenar IPv6.
IPv6 puede tener 45 caracteres si tiene una dirección de túnel. De acuerdo, es un caso extremo, pero ¿por qué no a prueba de futuro? – Robert
Ah, sí, se olvidó de eso :) – Sander
así que, básicamente, utiliza hasta 45 bytes para las direcciones que usan 16 bytes máx. me parece un desperdicio ... (con direcciones ipv4 empeora: dirección de 4 bytes y repr de cadenas de 15 bytes) – knittl
puede almacenarlos en un campo binario con una longitud de 128 bits (16 bytes, BINARY(16)
o VARBINARY(16)
). para convertir cualquier dirección IP a su representación binaria, puede usar la función php inet_pton
. este método funcionará para direcciones IPv4 e IPv6. inet_ntop
se puede utilizar para recuperar la representación de cadena de la dirección IP almacenada (independientemente de la versión)
¿Puedo utilizar tanto para IPv6 e IPv4 – user552828
@ user552828: sí, se puede usar tanto para IPv4 e IPv6 – knittl
pero dicen que IPv6 puede contener hasta 45 caracteres en el caso de tunneled ip, ¿es la longitud de 128 bits está bien? Estoy preguntando porque no soy tan bueno en la codificación, soy un novato – user552828
This tutorial podría ayudarlo.
La forma más eficiente de ahorro de direcciones IPv4 es con un campo INT (no VARCHAR como era de esperar). Puede convertirlos usando PHP ip2long
y volver usando la función INET_NTOA
de MySQL o la función long2ip
de PHP.
Si necesita almacenar IPv6, tendrá que utilizar un campo binario en lugar y la función de PHP inet_pton
.
no hay una función incorporada llamada 'ip2bin'. sin embargo, puede escribir uno usted mismo: 'function ip2bin ($ ip) {return inet_pton ($ ip); } ' – knittl
@knittl - Agregué la función a la que me refería. Mi mal por no incluirlo. –
@francois: ¿por qué no simplemente usar 'inet_pton'? ya funciona con casi todas las representaciones de cadenas de direcciones IP, sin necesidad de transformaciones complicadas – knittl
- 1. PHP - Almacenamiento de texto en la base de datos MySQL
- 2. Almacenamiento de direcciones IPv6 en MySQL
- 3. Almacenamiento de entradas en la base de datos MySQL
- 4. ¿Diferentes navegadores, direcciones IP diferentes?
- 5. La forma más eficiente de almacenar direcciones IP en MySQL
- 6. Tienda IPv6 en la base de datos
- 7. lista de direcciones IP ordenar usando C#
- 8. PHP - Almacenamiento de sesión en una base de datos
- 9. almacenamiento de datos binarios en mysql
- 10. Almacenando la dirección IP en la base de datos MySQL (IPv4 e IPv6)
- 11. almacenamiento de datos JSON en MySQL
- 12. Tamaño de la base de datos. PHP - MySQL
- 13. Almacenamiento de matrices en la base de datos utilizando ActiveRecord
- 14. ¿Hay alguna forma de descubrir qué direcciones IP están conectadas a la base de datos?
- 15. ¿La mejor manera de almacenar IP en la base de datos?
- 16. Importación de datos CSV usando PHP/MySQL
- 17. Almacenamiento de ceros iniciales de números enteros en la base de datos MySQL como INTEGER
- 18. Almacenamiento de datos de calendario en MySQL
- 19. ¿Puedo crear una base de datos usando PDO en PHP
- 20. cómo almacenar video en la base de datos usando mysql?
- 21. ¿Cómo exportar e importar la base de datos mysql con sus datos usando el script php?
- 22. Conexión a la base de datos Cubo que utiliza la base de datos MySQL desde PHP (usando JDBC)
- 23. Caracteres extraños de la base de datos PHP MySQL
- 24. Rieles: almacenamiento de datos cifrados en la base de datos
- 25. Cifrado de datos para almacenamiento en la base de datos
- 26. Asociar direcciones IP con países
- 27. Mejores prácticas para el almacenamiento de direcciones coherente y completo en una base de datos
- 28. Error al tirar de la base de datos mysql en la base de datos mysql local
- 29. Almacenamiento de información de OpenID en la base de datos
- 30. Rieles: almacenamiento de archivos binarios en la base de datos
Depende de lo que quiera hacer con él y de la versión de IP que le interese. –
depende de cómo se está a usarlo, pero en general, creo que será mejor varchar – Balanivash
Esto podría ayudarle a: http://stackoverflow.com/questions/1038950/what-is-be-the-most-appropriate-data- type-for-storage-an-ip-address-in-sql-server? – Alfred