如果IP地址已经在数据库中,则很简单

时间:2010-12-23 17:15:58

标签: php mysql

嘿,我想在将印象插入数据库时​​进行简单的检查。我只想确定IP地址是否已经在数据库ip字段中。

最好在PHP中,而不是查询。

3 个答案:

答案 0 :(得分:2)

您可以使用ip2long或相应的mysql函数将IP地址转换为整数。 然后我建议一个带有MyIsam存储引擎和哈希索引的表。 如果您不准备ipv6,您可以存储二进制数据。 如果可能的话,你也可以在内存表或apc缓存中执行此操作(当你不需要永久存储ip地址时,它们可能会在服务器重启时丢失)。

答案 1 :(得分:1)

$check_ip = (mysql_num_rows(mysql_query("SELECT ip FROM ip_table WHERE ip='$ip'",$db)) > 0) ? true : false;

答案 2 :(得分:1)

您可能需要使用MySQL来确定这一点(PHP如何知道,除非它在数据库之外维护自己的所有“已知”IP地址集?)

但是,您可能会使用单个查询,最有可能是使用INSERT ... ON DUPLICATE KEY UPDATE样式查询。

即:你无论如何都要尝试插入,但如果有重复的密钥,你可以根据需要更新视图计数器等。

也就是说,假设IP地址在任何有意义的方式都是唯一的,这是非常天真的,因为代理服务器等将有效地隐藏单个IP地址后面的许多用户。然后,这可能与您的问题域无关。