首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL变量PHP COnnections

MySQL变量PHP COnnections
EN

Stack Overflow用户
提问于 2013-07-23 03:19:49
回答 2查看 351关注 0票数 0

我正在使用PHP应用程序连接到MySQL,我想要做的是设置已经登录的客户端的userID,然后在视图和函数中使用该MySQL变量来限制返回的数据。

目前,我只是使用:-

代码语言:javascript
复制
SET @UserID = 3;

然后在视图/函数中引用它。

这是跨多个并发用户会话执行此操作的合适且可靠的方法吗?这会在用户的MySQL连接(或页面加载)的生命周期中存在吗?显然,我希望确保没有其他连接使用它。它是在每次页面加载(或从我的应用程序重新连接MySQL )时设置的。

谢谢大家!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-23 03:25:59

正如它在mysql变量手册页的第一段中明确指出的那样:http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

用户定义变量是特定于会话的。也就是说,由一个客户端定义的用户变量不能被其他客户端看到或使用。当客户端退出时,给定客户端会话的所有变量都会自动释放。

例如,它们在php<->mysql连接保持活动状态时存在,每个连接,并在连接关闭/终止时自动删除。除非您在PHP中使用持久连接(无论如何都不应该使用持久连接),否则mysql变量基本上会在该特定脚本调用期间存在,并且在同一用户稍后带着另一个http请求返回时将不可用。

票数 1
EN

Stack Overflow用户

发布于 2013-07-23 03:26:29

因此,严格地说,您所做的应该不是问题(每个PHP连接或多或少都是独立存在的)。但是,也就是说,这不是最好的方法。

我认为你有一个“如果你只有一把锤子,所有的东西看起来都像一颗钉子”的问题。MySQL在设计时并没有考虑到请求生命周期,它也不应该意识到这一点。另一方面,PHP就是按照这种思想设计的。

而不是:

代码语言:javascript
复制
mysqli_query('Set @UserID=' . $id);
$output = mysqli_query('SELECT * FROM FOO WHERE ID=@UserID');

为什么不直接使用bound variables?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17795660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档