0

我在我的数据库中创建了触发器。我需要将 PHP 变量传递给该触发器。

我尝试在 PhpMyAdmin 中执行类似的操作:

SET @myVariable = 123;
INSERT INTO table (foo) VALUES (bar);

成功触发 @myVariable - 所以我在 Nette 项目中尝试过,但没有成功。

首先,Prepared Statement 只能执行一个命令,所以我不能同时调用 SET 和 INSERT。

然后我发现变量应该对整个连接有效的信息,所以我$database->query('SET @myVariable = 123');在连接到数据库后尝试调用。然后我尝试插入。但同样,我没有成功。

有人知道如何传递 PHP 变量来触发吗?

4

3 回答 3

0

要将变量显式设置为特定值,请使用 SET 语句。

同步:

SET @variable = 值

前任:

$db->query('SET @myVariable=?', '123' ); OR use mysql as mention above.

设置变量的值将持续存在,直到您为其分配另一个值或直到会话结束。

因此,您可以使用 select 语句在 Trigger 中获取变量。

同步:

选择@变量;

前任:

在触发器中

IF (condition) THEN
  SET myVariable_t = (SELECT @myVariable);
   INSERT INTO table
     SET column_name = myVariable_t,          
END IF;
于 2019-07-12T09:55:15.640 回答
0

出于某种原因,问题出在我将变量与字符串一起使用时。当我将整数值分配给变量时,一切正常。

于 2019-07-17T12:14:30.067 回答
0

对于设置变量是合适的 QUERY 命令。永远不要连接字符串,总是加上带问号的参数(SQL注入漏洞)

$database->query('SET @myVariable = ?', 123);
$database->query('INSERT INTO table ?', ['foo' => bar]);
于 2018-07-09T06:45:40.283 回答