【发布时间】:2014-09-13 20:54:38
【问题描述】:
情况:MySQL 查询使用从外部传递的值。这是通过声明和初始化一个会话变量来完成的,该变量在会话结束之前一直有效:
SET @id = 0;
SELECT * FROM my_table
WHERE id = @id;
问题:在查询完成后删除会话变量是否是一种好习惯(出于安全原因)?最合适的方法是什么?
STUDIES:我发现了以下建议,但有一些疑问,因为它看起来像“uninitialise”,而不是“undeclare”:
SET @id = NULL;
【问题讨论】:
-
如果您的应用程序使用连接池,使用会话可能很危险。声明的全局变量可以保留在原处。将值作为参数简单地传递给任何需要它的查询/过程不是更好吗?
-
是的,使用了连接池。我认为@id 是一个会话参数,而不是全局参数。使用名称参数比使用“?”放置参数更灵活,因为添加/删除变量不需要代码中的顺序更改。
-
导致传递给方法键值对并将所有@键替换为相应的值。这是个好主意,谢谢。这有助于我在不同的文件中保持不同的语言不混合。