Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lưu trữ IPv6 trong cơ sở dữ liệu

precisionttl gần hơn, thay vì nhị phân (16), hãy sử dụng varbinary (16) làm user196009 đã trả lời trong một câu hỏi liên quan. Nó làm việc cho tôi. Làm thế nào?

Lưu trữ IP:

<?php
  $query = "insert into stats(vis_ip, id_stat) values('" . inet_pton('66.102.7.104') . "', '1')"; // google's IP address
  // using a PDO wrapper. http://www.phpclasses.org/package/5206-PHP-Execute-database-queries-from-parameters-using-PDO.html
  include_once 'db.php';
  $c = new DB();
  $visit = $c->getResults($query); // stored as binary
?>

Truy xuất IP:

<?php
  $query = "SELECT `vis_ip` FROM `stats` WHERE `id_stat`=1";
  // PDO wrapper
  include_once 'db.php';
  $c = new DB();
  $stats = $c->getRow($query);
  echo inet_ntop($stats->vis_ip); // outputs 66.102.7.104
?> 

Nó sẽ hoạt động với địa chỉ IPv6 (tôi có kết nối IPv4). Tôi không phải là chuyên gia nên tôi chưa biết độ dài varbinary có đúng không, nhưng tôi đã nói như thế nào, nó hoạt động với tôi.

Để kiểm tra xem 'Hỗ trợ IPv6' có được bật trong phiên bản / máy chủ PHP của bạn hay không:

<?php
  phpinfo(INFO_GENERAL); // http://php.net/manual/es/function.phpinfo.php
?> 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. làm thế nào để sắp xếp thứ tự của LEFT JOIN trong truy vấn SQL?

  2. # 1136 - Số cột không khớp với số giá trị?

  3. Các nhà cung cấp vai trò / thành viên ASP.NET cho MySQL?

  4. codeigniter - cơ sở dữ liệu:cách cập nhật nhiều bảng với một truy vấn cập nhật duy nhất

  5. kết nối cơ sở dữ liệu không thành công sau khi tạo tệp jar