将php变量传递给mysql触发器#nette

flmtquvp  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(408)

我已经在数据库中创建了触发器。我需要把php变量传递给那个触发器。
我尝试在phpmyadmin中执行类似的操作:

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

触发器成功地获取了@myvariable—所以我在nette项目中尝试了它,但没有成功。
首先,prepared语句只能执行一个命令,所以我不能同时调用set和insert。
然后我找到了变量对整个连接都有效的信息,所以我尝试调用 $database->query('SET @myVariable = 123'); 连接到数据库后。然后我试着插入。但我还是没有成功。
有人知道如何将php变量传递给触发器吗?

cfh9epnr

cfh9epnr1#

出于某种原因,问题是当我使用带有字符串的变量时。当我给变量赋值时,一切正常。

lsmd5eda

lsmd5eda2#

对于set变量是合适的查询命令。从不串联字符串,始终添加带问号的参数(sql注入漏洞)

$database->query('SET @myVariable = ?', 123);
$database->query('INSERT INTO table ?', ['foo' => bar]);
nzrxty8p

nzrxty8p3#

要将变量显式设置为特定值,请使用set语句。
同步:
设置@variable=value
前任:

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

设置变量的值将一直存在,直到您为其分配另一个值或会话结束。
所以可以使用select语句在触发器中获取变量。
同步:
选择@variable;
前任:
在触发器中

IF (condition) THEN
  SET myVariable_t = (SELECT @myVariable);
   INSERT INTO table
     SET column_name = myVariable_t,          
END IF;

相关问题