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の長さが正しいかどうかはまだわかりませんが、私が言ったように、それは私にとっては機能します。

    PHPバージョン/ホストで「IPv6サポート」が有効になっているかどうかを確認するには:

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


    1. MySQLWorkbenchをAmazonRDSに接続する方法は?

    2. Mysqlドライバーの問題

    3. MySQLで列挙値を返すための最良の方法は何ですか?

    4. SQLServerでのエラーおよびトランザクション処理の実装