嘿,我想在将印象插入数据库时进行简单的检查。我只想确定IP地址是否已经在数据库ip字段中。
最好在PHP中,而不是查询。
答案 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地址后面的许多用户。然后,这可能与您的问题域无关。