gpt4 book ai didi

php - MYSQL审计程序及触发器

转载 作者:行者123 更新时间:2023-11-30 21:55:36 25 4
gpt4 key购买 nike

我需要为表更改创建审计记录。为此我使用了这个触发器

BEGIN
CALL proc_audit_trasabilitate(new.stare,new.serie,new.id_palet);
END

在触发器中调用这个过程:

BEGIN
DECLARE v_username VARCHAR(50);
SELECT @php_user_name into v_username;
INSERT INTO stari_istoric (stare,serie,id_palet,username) VALUES(p_stare,p_serie,p_id_palet,v_username);
END

基本上插入后的触发器有效,并且插入了用户名和其他字段,但是当我在更新表后使用新的触发器(与插入的触发器相同)时,用户名以默认值 NULL 上传。

@php_user_name 是这样填充的:

if (isset($_SESSION['username'])) {
require_once 'libraries/Audit.class.php';
$db_ses_set = Audit::set_mysql_session_parameter('php_user_name',$_SESSION['username'],$db; }

与 Audit.class:

<?php
class Audit {

public static function set_mysql_session_parameter($parameter_name,$parameter_value, $db) {
$query = "SET @" . $parameter_name . " = '" .$parameter_value. "';";
$result = $db->query($query);
return $result;
}
}

?>

最佳答案

当您使用更新触发器时,:old 值将被删除,而 :new 值将被“插入”。我认为在你的情况下你以某种方式返回 :old 值,这就是为什么值为 Default, NULL

  1. 插入 --> :新值
  2. 删除 --> :旧值
  3. 更新 --> :new & :old 值

关于php - MYSQL审计程序及触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45299122/

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