Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przechowuj IPv6 w bazie danych

knittl był bliżej, zamiast binary (16) użyj varbinary (16) jako user196009 odpowiedział w powiązanym pytaniu. Mi to pasuje. Jak?

Przechowywanie adresu 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
?>

Pobieranie adresu 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
?> 

Powinien działać z adresami IPv6 (mam połączenie IPv4). Nie jestem ekspertem, więc nie wiem jeszcze, czy długość varbinary jest poprawna, ale jak powiedziałem, działa dla mnie.

Aby sprawdzić, czy „Obsługa IPv6” jest włączona w Twojej wersji/hoście PHP:

<?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. MySQL Sortuj według 2 kolumn

  2. SqlNullValueException podczas wykonywania procedury składowanej z MySqlCommand

  3. jak odtwarzać dźwięk mp3 zapisany w mysql blob za pomocą php

  4. Jak obliczyć różnicę dat z wyłączeniem weekendów i świąt w MySQL?

  5. Problem MYSQL INSERT SELECT