我试图存储IP地址和PHP的会话ID,以“唯一”标识用户,管理用户队列,通过互联网用令牌控制(一个)硬件设备。当用户有令牌时,有权限控制设备X次(2分钟)。然后我还需要一个时间戳,用户请求令牌的时间。
我发现在SQlite中查找IP地址和时间戳的正确字段类型时出现问题。
我正在使用PHP,因此需要一种简单的方法来从数据库中检索匹配“文本”cookie会话ID和IP的队列,使用时间戳进行排序和过滤。
在SQlite数据库中存储它们的更好方法是什么?
我应该使用整型字段还是文本字段?有函数可以处理这些类型吗?
1条答案
按热度按时间r55awzrz1#
SQLite是弱类型,但支持类型关联。SQLite只支持小范围的“column types“(“类型关联”)
但是,在您的情况下,您可以选择:您可以将时间戳存储为
INTEGER
中的UNIX时间戳,或者存储为TEXT
中的日期时间格式的字符串。请参阅上面链接提供的文档中的“1.2日期和时间数据类型”一节。Date And Time Functions可以帮助您处理此类数据。将IP转换为一个后,可以存储为
INTEGER
:ip2long()
,或者也存储为TEXT
,建议使用前者。更新:如果你选择使用
INTEGER
,你将被限制为只能存储IPv4地址,因为SQLite只能存储64位整数,而IPv6是128位。但是,因为ip2long
只适用于IPv4,范围不是唯一的问题。