Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL数据库中选择php会话id作为主键是一个好主意吗?_Php_Mysql_Primary Key_Sessionid - Fatal编程技术网

在MySQL数据库中选择php会话id作为主键是一个好主意吗?

在MySQL数据库中选择php会话id作为主键是一个好主意吗?,php,mysql,primary-key,sessionid,Php,Mysql,Primary Key,Sessionid,在MySQL数据库中选择php会话id作为主键是一个好主意吗?会有意想不到的惊喜吗 为什么我要问这个问题:我想存储访问者行为,并想在会话id上识别访问者 我不知道PHP会话ID生成的确切标准。这就是为什么我也不知道是否有一天会存在重复的 EDIT2:除了性能问题之外,会话ID并不总是唯一的。因此,不应将其用作PK。请参见此处这不是一个好主意,因为建议主键为整数,这有助于索引。如果会话ID是唯一的,当然可以使用它作为数据库主键,但是我希望您不要考虑到数据库的设计和速度。 为什么我要问这个问题:我想

在MySQL数据库中选择php会话id作为主键是一个好主意吗?会有意想不到的惊喜吗

为什么我要问这个问题:我想存储访问者行为,并想在会话id上识别访问者

我不知道PHP会话ID生成的确切标准。这就是为什么我也不知道是否有一天会存在重复的


EDIT2:除了性能问题之外,会话ID并不总是唯一的。因此,不应将其用作PK。请参见此处

这不是一个好主意,因为建议主键为整数,这有助于索引。如果会话ID是唯一的,当然可以使用它作为数据库主键,但是我希望您不要考虑到数据库的设计和速度。 为什么我要问这个问题:我想存储访问者行为,并想在会话id上识别访问者

为什么不添加名为sessionid的非主键列?你仍然可以通过这种方式识别它们


关于唯一性,请参阅此

这不是一个好主意,因为建议主键为整数,这有助于索引。如果会话ID是唯一的,当然可以使用它作为数据库主键,但是我希望您不要考虑到数据库的设计和速度。 为什么我要问这个问题:我想存储访问者行为,并想在会话id上识别访问者

为什么不添加名为sessionid的非主键列?你仍然可以通过这种方式识别它们

关于唯一性,请参考此

为什么我要问这个问题:我想存储访问者行为,并想在会话id上识别访问者

就用饼干吧。在cookie中存储一个令牌,并将该令牌与访问者id(一个自动递增的整数和主键)以及其他需要的行为数据一起存储在MySQL中。存储长时间记忆访问者的会话文件将是存储的负担

将php会话id作为主会话id并不是任何人都会为其数据库选择的选项。顺便说一下,每次重新启动浏览器时,会话id都会发生变化,考虑到您没有疯狂地更改
会话.cookie生存期
会话.gc maxlifetime
(),那么您如何识别已经访问过的访问者,他们现在有了一个新的会话id

为什么我要问这个问题:我想存储访问者行为,并想在会话id上识别访问者


就用饼干吧。在cookie中存储一个令牌,并将该令牌与访问者id(一个自动递增的整数和主键)以及其他需要的行为数据一起存储在MySQL中。存储长时间记忆访问者的会话文件将是存储的负担

将php会话id作为主会话id并不是任何人都会为其数据库选择的选项。顺便说一下,每次重新启动浏览器时,会话id都会发生变化,考虑到您还没有疯狂地更改
会话.cookie生存期
会话.gc maxlifetime
(),那么您如何识别已访问的访问者,谁现在有了一个新的会话id。

我不知道在MySQL数据库中选择php会话id作为主键是不是一个好主意,但这不是一个坏主意,因为如果我们的脚本中出现安全漏洞,黑客就不能从我们的数据库中删除表。如果你真的很偏执,为每个函数创建一个不同的用户

查看下面的链接以更好地理解
我不知道在MySQL数据库中选择php会话id作为主键是不是一个好主意,但这不是一个坏主意,因为如果我们的脚本中出现安全漏洞,黑客就无法从我们的数据库中删除表。如果你真的很偏执,为每个函数创建一个不同的用户

查看下面的链接以更好地理解

实际上,如果您总是使用登录的用户会话id在数据库中进行比较,那么您会感到意外。每次登录时,会话id都会不同。如果您尝试将表中的数据与用户的当前会话id进行比较,那么它将与之前存储的id不匹配。长字符串作为主键?不,不,只是不,为什么?由于性能原因?对主键使用自动递增id,并将会话id存储为索引字符串。实际上,如果您始终使用登录用户会话id在数据库中进行比较,则会出现意外情况,每次登录时会话id都会不同,如果您尝试将表中的数据与用户的当前会话id进行比较,它将与以前存储的id不匹配。长字符串作为主键?不,不,只是不,为什么?由于性能原因?请对主键使用自动递增id,并将会话id存储为索引字符串。@LonelyProgrammer从research获得,它不能保证始终具有唯一的sessionid。但让我们说,独特性不是问题所在。随着时间的推移,性能会越来越差。您的链接已经回答了我的问题,因此我将您的答案标记为正确答案。谢谢大家!@孤独的程序员很高兴我能成为help@LonelyProgrammer从研究来看,并不能保证总是有一个独特的sessionid。但让我们说,独特性不是问题所在。随着时间的推移,性能会越来越差。您的链接已经回答了我的问题,因此我将您的答案标记为正确答案。谢谢大家!@孤独的程序员很高兴我能帮上忙