将 PHP 变量传递给 MySQL 触发器 #nette
Pass PHP variable to MySQL trigger #nette
我在数据库中创建了触发器。我需要将 PHP 变量传递给该触发器。
我尝试在 PhpMyAdmin 中执行类似的操作:
SET @myVariable = 123;
INSERT INTO table (foo) VALUES (bar);
触发器成功获取@myVariable - 所以我在Nette项目中尝试了它,但我没有成功。
首先,Prepared Statement只能执行一个命令,所以不能同时调用SET和INSERT。
然后我发现信息说变量应该对整个连接有效,所以我尝试在连接到数据库后调用$database->query('SET @myVariable = 123');
。然后我尝试了插入。但是,我还是没有成功。
有人知道如何将 PHP 变量传递给触发器吗?
设置变量适合QUERY命令。从不连接字符串,始终添加带问号的参数(SQL 注入漏洞)
$database->query('SET @myVariable = ?', 123);
$database->query('INSERT INTO table ?', ['foo' => bar]);
要将变量显式设置为特定值,请使用 SET 语句。
语法:
SET @variable = value
例如:
$db->query('SET @myVariable=?', '123' ); OR use mysql as mention above.
设置变量的值一直存在,直到您为其分配另一个值或会话结束。
因此您可以使用 select 语句在触发器中获取变量。
语法:
SELECT @variable;
例如:
触发中
IF (condition) THEN
SET myVariable_t = (SELECT @myVariable);
INSERT INTO table
SET column_name = myVariable_t,
END IF;
出于某种原因,问题出在我将变量与字符串一起使用时。当我将整数值赋给变量时,一切正常。
我在数据库中创建了触发器。我需要将 PHP 变量传递给该触发器。
我尝试在 PhpMyAdmin 中执行类似的操作:
SET @myVariable = 123;
INSERT INTO table (foo) VALUES (bar);
触发器成功获取@myVariable - 所以我在Nette项目中尝试了它,但我没有成功。
首先,Prepared Statement只能执行一个命令,所以不能同时调用SET和INSERT。
然后我发现信息说变量应该对整个连接有效,所以我尝试在连接到数据库后调用$database->query('SET @myVariable = 123');
。然后我尝试了插入。但是,我还是没有成功。
有人知道如何将 PHP 变量传递给触发器吗?
设置变量适合QUERY命令。从不连接字符串,始终添加带问号的参数(SQL 注入漏洞)
$database->query('SET @myVariable = ?', 123);
$database->query('INSERT INTO table ?', ['foo' => bar]);
要将变量显式设置为特定值,请使用 SET 语句。
语法:
SET @variable = value
例如:
$db->query('SET @myVariable=?', '123' ); OR use mysql as mention above.
设置变量的值一直存在,直到您为其分配另一个值或会话结束。
因此您可以使用 select 语句在触发器中获取变量。
语法:
SELECT @variable;
例如:
触发中
IF (condition) THEN
SET myVariable_t = (SELECT @myVariable);
INSERT INTO table
SET column_name = myVariable_t,
END IF;
出于某种原因,问题出在我将变量与字符串一起使用时。当我将整数值赋给变量时,一切正常。