gpt4 book ai didi

php - MYSQL 用户定义的@VARIABLE

转载 作者:行者123 更新时间:2023-11-29 07:41:50 26 4
gpt4 key购买 nike

我正在编写一个 php-angularjs web 应用程序,现在正在创建一个带有插入/更新过程和触发器的修订系统。

登录后我需要做的事情:

$sql = 'SET @id_user := ' . (int)$_SESSION['user']['id_user'].';';

如果我选择它,效果很好(按预期返回用户 ID)但稍后(1 分钟后)经过一些查询和访问页面后,当我更新客户表时,除了 @user_id var 为空之外,一切都很好

问题:有没有办法为我的完整 session 设置 var 以避免每次需要记录修改时重复 SET @var?

(它还需要认为我有多个管理员)

最佳答案

User-defined variables在 MySQL 中是 session 绑定(bind)的。因此,它们存在于单一连接的上下文中。

User-defined variables are session-specific. That is, a user variable defined by one client cannot be seen or used by other clients. All variables for a given client session are automatically freed when that client exits.

如果您将重用相同的连接,那么根据定义,变量将是相同的(因此,“共享”)。但是,如果您的请求初始化不同的连接,那么您将无法在另一个 session 中访问一个 session 中的变量。

作为结论 - 用户定义的变量从来就不是用于状态转换的,这是不安全的,而且实际上,即使在一个 session 上下文中的多个查询中依赖它们也会产生副作用。它们可能用于“调整”您的查询(比方说,与枚举相关的问题,因为 MySQL 中不存在序列),但我不建议使用它们进行状态传输。

关于php - MYSQL 用户定义的@VARIABLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28880303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com