Mysql
 sql >> база данни >  >> RDS >> Mysql

Съхранявайте IPv6 в база данни

knittl беше по-близо, вместо binary(16) използвайте varbinary(16) като user196009 отговорено в свързан въпрос. При мен работи. Как?

Запазване на 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
?>

Извличане на 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
?> 

Трябва да работи с IPv6 адреси (имам IPv4 връзка). Аз не съм експерт, така че все още не знам дали дължината на varbinary е правилна, но както казах, работи за мен.

За да проверите дали „IPv6 Support“ е активирана във вашата 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

  2. Как да получите разликата между последователни редове в MySQL?

  3. Изтриване, актуализиране с производни таблици?

  4. MySQL regexp много бавно от подобно

  5. Грешка в MySQL 1118 (Размерът на реда е твърде голям) при възстановяване на базата данни на Django-mailer