我正在寻找使用带有 PHP 和 MySQL 的 Web 前端创建一个基本的 IP 管理解决方案。我对 PHP 或 MySQL 不太熟悉,但我想知道是否可以执行以下操作:
当用户使用 HTML 表单将新的子网范围插入数据库(例如 192.168.1.0/24)时,是否有可能触发另一个创建表(例如 ip_addresses),该表将使用子网范围自动填充表(例如 192.168.1.1、1.2、1.3 等)。
抱歉,如果我太含糊了-谢谢
我正在寻找使用带有 PHP 和 MySQL 的 Web 前端创建一个基本的 IP 管理解决方案。我对 PHP 或 MySQL 不太熟悉,但我想知道是否可以执行以下操作:
当用户使用 HTML 表单将新的子网范围插入数据库(例如 192.168.1.0/24)时,是否有可能触发另一个创建表(例如 ip_addresses),该表将使用子网范围自动填充表(例如 192.168.1.1、1.2、1.3 等)。
抱歉,如果我太含糊了-谢谢
尽管可以按照您的要求进行操作,但我建议您不要这样做。在 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;
你可以使用触发器来做到这一点。
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 - 有关它如何工作的详细信息。