sqlite ip地址存储

wsewodh2  于 2022-12-13  发布在  SQLite
关注(0)|答案(1)|浏览(297)

我试图存储IP地址和PHP的会话ID,以“唯一”标识用户,管理用户队列,通过互联网用令牌控制(一个)硬件设备。当用户有令牌时,有权限控制设备X次(2分钟)。然后我还需要一个时间戳,用户请求令牌的时间。
我发现在SQlite中查找IP地址和时间戳的正确字段类型时出现问题。
我正在使用PHP,因此需要一种简单的方法来从数据库中检索匹配“文本”cookie会话ID和IP的队列,使用时间戳进行排序和过滤。
在SQlite数据库中存储它们的更好方法是什么?
我应该使用整型字段还是文本字段?有函数可以处理这些类型吗?

r55awzrz

r55awzrz1#

SQLite是弱类型,但支持类型关联。SQLite只支持小范围的“column types“(“类型关联”)

INTEGER
REAL
NUMERIC
TEXT
BLOB
NONE

但是,在您的情况下,您可以选择:您可以将时间戳存储为INTEGER中的UNIX时间戳,或者存储为TEXT中的日期时间格式的字符串。请参阅上面链接提供的文档中的“1.2日期和时间数据类型”一节。Date And Time Functions可以帮助您处理此类数据。
将IP转换为一个后,可以存储为INTEGERip2long(),或者也存储为TEXT,建议使用前者。
更新:如果你选择使用INTEGER,你将被限制为只能存储IPv4地址,因为SQLite只能存储64位整数,而IPv6是128位。但是,因为ip2long只适用于IPv4,范围不是唯一的问题。

相关问题