sql >> Databáze >  >> RDS >> Mysql

Uložte IPv6 do databáze

knittl byl blíže, místo binárního(16) použijte varbinary(16) jako uživatel196009 odpovězeno v související otázce. Pro mě to funguje. Jak?

Ukládání 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
?>

Načítání 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
?> 

Mělo by to fungovat s adresami IPv6 (mám připojení IPv4). Nejsem odborník, takže zatím nevím, zda je délka varbinary správná, ale jak jsem řekl, funguje mi to.

Chcete-li zkontrolovat, zda je ve vaší verzi/hostiteli PHP povolena 'Podpora IPv6':

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


  1. Tipy pro opravu fragmentace indexu SQL Server

  2. Je vlákno připojení pymysql bezpečné? Je vlákno kurzoru pymysql bezpečné?

  3. Jak mohu vybrat řádek s nejvyšším ID v MySQL?

  4. Jak nasadit databázi Chamilo MySQL pro vysokou dostupnost