如何将php会话值转换为mysql触发器

时间:2013-12-26 04:34:59

标签: php mysql session triggers

如何从php session(userid)中获取字段值以在mysql触发器中使用它

我的触发器:

 BEGIN
 IF NEW.nombre <> OLD.nombre THEN
        INSERT INTO socios_history (socio_id,tabla,campo, old_value, new_value,lstuser,updated) VALUES (old.socio_id,'usuarios','nombre',old.nombre,new.nombre,XXXXX,now());
    END IF;
 IF NEW.email <> OLD.email THEN
        INSERT INTO socios_history (socio_id,tabla,campo, old_value, new_value,lstuser,updated) VALUES (old.socio_id,'usuarios','email',old.email,new.email,XXXXX,now());
    END IF;
END

XXXXXX将是来自$_SESSION["userid"];

的用户ID

2 个答案:

答案 0 :(得分:0)

我不确定你的意思。如果你能稍微清理一下你的问题会很棒。从目前为止我想要从你的会话中检索存储的值。

在登录期间,您应该将用户的用户名基本上存储在会话变量中:

....mysql query checking for login
if login success
$_SESSION['userid'] = $username;

然后在你的触发器中检索它为它创建一个变量

$userid = $_SESSION['userid'];

IF NEW.nombre <> OLD.nombre THEN INSERT INTO socios_history (socio_id,tabla,campo, old_value, new_value,lstuser,updated) VALUES (old.socio_id,'usuarios','nombre','old.nombre','new.nombre','$userid',now());

答案 1 :(得分:0)

在建立连接时,可以想象在MySQL中设置变量。 (我可以验证SQL是否有效;没有测试过用PHP做过。)

$set_id = $pdo->prepare('SET @user_id = ?');
$set_id->execute([$_SESSION['userid']]);

让您的触发器使用@user_id

请注意,这可能会因持久连接而变得古怪。