0

我正在寻找使用带有 PHP 和 MySQL 的 Web 前端创建一个基本的 IP 管理解决方案。我对 PHP 或 MySQL 不太熟悉,但我想知道是否可以执行以下操作:

当用户使用 HTML 表单将新的子网范围插入数据库(例如 192.168.1.0/24)时,是否有可能触发另一个创建表(例如 ip_addresses),该表将使用子网范围自动填充表(例如 192.168.1.1、1.2、1.3 等)。

抱歉,如果我太含糊了-谢谢

4

2 回答 2

2

尽管可以按照您的要求进行操作,但我建议您不要这样做。在 MySQL 中,通常将 IP 地址存储为长整数,而不是将其字符串表示为点分四边形。MySQL 提供了两个函数,INET_ATON()它的对应函数INET_NTOA()将 IP 地址转换为长整数。

我推荐的结构是存储子网的开始和结束整数表示。这样,如有必要,就可以查询位于端点之间的地址。它还允许您存储不完整的子网。

来自 MySQL 文档:

mysql> SELECT INET_ATON('10.0.5.9');
        -> 167773449
mysql> SELECT INET_NTOA(167773449);
        -> '10.0.5.9'

您可以使用以下语句进行查询:

SELECT * ipRanges WHERE INET_ATON('192.168.1.99') BETWEEN startIpNum AND endIpNum;
于 2011-10-10T12:36:42.970 回答
0

你可以使用触发器来做到这一点。

CREATE
    TRIGGER new_range INSERT
    ON ip_range FOR EACH ROW BEGIN ... END

并将管理特定 IP 地址的逻辑放在 BEGIN ... END 范围内,而不是“...”

看看这里:http ://dev.mysql.com/doc/refman/5.0/en/create-trigger.html - 有关它如何工作的详细信息。

于 2011-10-10T12:34:50.353 回答