【发布时间】:2018-07-15 07:24:24
【问题描述】:
我正在尝试使用 PHP 在 mySQL 中创建触发器
mysqli_select_db($host, "game");
$sql = "CREATE TRIGGER test_seven BEFORE INSERT ON test FOR EACH ROW INSERT INTO test (name) VALUES ('test')";
$query = $host->prepare($sql);
$query->execute();
即使我尝试在 phpMyAdmin 上运行它,它也无法正常工作。
编辑:“准备好的语句协议尚不支持此命令” 那么有没有办法跳过prepare语句呢?
【问题讨论】:
-
我也遇到了同样的问题,对于程序/跳跳虎,仍然不知道为什么它不允许,但我的猜测是,它由于用户权限,在 phpmyadmin 用户具有不同的权限/特权以及何时即使用户相同,您也可以使用具有不同权限的代码做一些事情。不确定它是否正确
-
“不工作”是什么意思?你得到什么错误?你甚至在你的 PHP 代码中检查 mySQL 错误吗? PHP 登录的用户是否有权执行此操作?
-
@ADyson "prepared statement 协议尚不支持此命令" 那么有没有办法跳过prepare 语句?
-
不要将其作为准备好的语句执行。这是管理员的工作,而不是程序员。但除此之外,我怀疑该声明是否有效,就像你说的那样。您的触发器会创建一个无限循环,因此是不允许的。您的插入语句将触发触发器,触发器将触发触发器,触发器将触发触发器......等等。
标签: php mysql database web phpmyadmin