在存储过程中使用会话变量/用户变量

时间:2019-05-15 17:42:12

标签: stored-procedures mysqli

我的第一个存储过程。尝试学习如何正确地做事。 如果用户登录,则在PHP中使用用户名设置会话变量“ currentuser”。效果很好。
然后,如果用户进行了更改,我想调用一个存储过程(mysqli),该存储过程将具有4个值的行插入到日志表中:时间,用户,方法和日志文本。 “时间”值可以自行处理(使用默认值)。
我可以在调用存储过程时传递其余3个值,但是我只想传递'method'和'logtext',并让存储过程获取用户名本身,因为我已经在会话变量中获取了该用户名(或用户变量,不确定哪个更正确)。但是我无法弄清楚语法(甚至可能)。

我搜寻了很多东西,读了很多文章并做了一些实验,但是答案对我来说仍然不清楚。
这是我的存储过程,仅传递2个值,但尝试插入所有3个值,包括会话变量“ currentuser”中具有的“ user”。

DELIMITER $$
DROP PROCEDURE IF EXISTS sp_logchange$$
CREATE PROCEDURE sp_logchange (IN m VARCHAR(25), IN t VARCHAR(500))
LANGUAGE SQL
MODIFIES SQL DATA
SQL SECURITY DEFINER
COMMENT 'Register a database change'
BEGIN
    INSERT INTO changelog (user,method,logtext) VALUES (@currentuser,m,t);
END$$
DELIMITER ;

我以为我可以将其称为@currentuser,但是它不起作用。错误是“用户”不能为空(更改日志表中的“用户不为空”)。

0 个答案:

没有答案