loại trường thích hợp cho địa chỉ IP trong mysql là gì? và đúng cách để lưu trữ nó bằng cách sử dụng PHP là gì?Lưu trữ địa chỉ IP trong cơ sở dữ liệu MySQL bằng cách sử dụng PHP
Trả lời
Thông thường bạn có thể đi với VARCHAR (45) vì nó sẽ đủ dài để lưu trữ IPv6.
IPv6 có thể là 45 ký tự nếu bạn có địa chỉ đường hầm. Cấp nó là một trường hợp cạnh, nhưng tại sao không bằng chứng trong tương lai. – Robert
Ồ vâng, quên đi điều đó :) – Sander
vì vậy, về cơ bản bạn sử dụng tối đa 45 byte cho các địa chỉ sử dụng tối đa 16 byte? có vẻ khá lãng phí với tôi ... (với địa chỉ ipv4 nó tồi tệ hơn: 4 byte địa chỉ và 15 byte chuỗi repr.) – knittl
bạn có thể lưu trữ chúng trong trường nhị phân có độ dài 128 bit (16 byte, BINARY(16)
hoặc VARBINARY(16)
). để chuyển đổi bất kỳ địa chỉ IP nào thành biểu diễn nhị phân của nó, bạn có thể sử dụng hàm php inet_pton
. phương pháp này sẽ hoạt động cho cả địa chỉ IPv4 và IPv6. inet_ntop
có thể được sử dụng để lấy lại biểu diễn chuỗi của địa chỉ ip được lưu trữ (bất kể phiên bản)
Tôi có thể sử dụng nó cho cả IPv6 và IPv4 – user552828
@ user552828: có, bạn có thể sử dụng nó cho cả ipv4 và ipv6 – knittl
nhưng họ nói rằng IPv6 có thể dài 45 ký tự trong trường hợp ip đường hầm, độ dài 128bit là ok? Tôi hỏi vì Im không giỏi mã hóa, Im a newbie – user552828
This tutorial có thể giúp bạn.
Cách hiệu quả nhất để lưu địa chỉ IPv4 là với trường INT (không phải VARCHAR như bạn mong đợi). Bạn chuyển đổi chúng bằng cách sử dụng ip2long
của PHP và quay lại bằng chức năng INET_NTOA
của MySQL hoặc hàm long2ip
của PHP.
Nếu bạn cần lưu trữ IPv6, bạn sẽ muốn sử dụng trường BINARY thay thế và hàm inet_pton
của PHP.
không có hàm nội trang có tên 'ip2bin'. bạn có thể dễ dàng viết một mình mặc dù: 'function ip2bin ($ ip) {return inet_pton ($ ip); } ' – knittl
@knittl - Tôi đã thêm hàm tôi đang đề cập đến. Xấu của tôi vì không bao gồm nó. –
@francois: tại sao không đơn giản sử dụng 'inet_pton'? nó đã làm việc với hầu như tất cả các biểu diễn chuỗi các địa chỉ ip, không cần phải biến đổi phức tạp – knittl
- 1. Lưu trữ địa chỉ IP trong cơ sở dữ liệu MySQL (IPv4 và IPv6)
- 2. Cơ sở dữ liệu Magento IP được lưu trữ
- 3. Nhận địa chỉ IP bằng cách sử dụng Action Script?
- 4. Lưu trữ IPv6 trong cơ sở dữ liệu
- 5. Lưu trữ Enums trong Cơ sở dữ liệu MySQL
- 6. Lưu trữ Chứng chỉ X509 trong cơ sở dữ liệu
- 7. Facebook PHP SDK - Lưu trữ dữ liệu người dùng vào cơ sở dữ liệu MYSql
- 8. Làm cách nào để thực thi PHP được lưu trữ trong cơ sở dữ liệu MySQL?
- 9. Tôi nên lưu trữ địa chỉ IP cho MySQL?
- 10. Sao lưu cơ sở dữ liệu MySQL
- 11. Trả lời vé PHP/MySQL - Lưu trữ thư điện tử trong cơ sở dữ liệu?
- 12. nơi MySQL lưu trữ tệp cơ sở dữ liệu?
- 13. Cách hiệu quả nhất để lưu trữ địa lý trong cơ sở dữ liệu
- 14. Lưu mảng trong cơ sở dữ liệu mysql
- 15. PHP - Lưu trữ văn bản trong cơ sở dữ liệu MySQL
- 16. Store datetime php trong cơ sở dữ liệu mysql
- 17. cách lưu trữ mật khẩu trong cơ sở dữ liệu?
- 18. Phân tích dữ liệu XML bằng cách sử dụng php để đưa vào cơ sở dữ liệu mysql
- 19. Nhập tệp csv lớn vào cơ sở dữ liệu mysql bằng cách sử dụng php
- 20. Làm cách nào để lưu trữ và truy xuất hình ảnh từ cơ sở dữ liệu MySQL bằng PHP?
- 21. Lưu trữ thông tin OpenID trong cơ sở dữ liệu
- 22. Lưu trữ thông tin EXIF trong Cơ sở dữ liệu
- 23. Làm cách nào để sử dụng thủ tục được lưu trữ trong cơ sở dữ liệu MySql với Zend Framework?
- 24. Cách lưu trữ hàng/cột dữ liệu mysql trong mảng
- 25. Lưu trữ UUID trong cơ sở dữ liệu HSQLDB
- 26. Lưu trữ ngày giờ UTC trong cơ sở dữ liệu
- 27. Nhập dữ liệu CSV bằng cách sử dụng PHP/MySQL
- 28. Tomcat: Lưu trữ phiên trong cơ sở dữ liệu
- 29. lưu trữ dữ liệu JSON trong mysql
- 30. Cơ sở dữ liệu MySQL PHP Các ký tự lạ
Phụ thuộc vào những gì bạn muốn làm với nó và phiên bản IP nào bạn quan tâm. –
Tùy thuộc vào cách bạn sẽ sử dụng nó, nhưng nói chung, hãy nghĩ rằng varchar sẽ tốt hơn – Balanivash
Điều này có thể giúp bạn: http://stackoverflow.com/questions/1038950/what-is-be-the-most-appropriate-data- loại-cho-lưu-an-ip-địa-chỉ-trong-sql-server? – Alfred