【问题标题】:Unable to create trigger in PHP for mySQL无法在 PHP 中为 mySQL 创建触发器
【发布时间】: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


【解决方案1】:

显然,真正的问题是我不应该使用PDO::prepare 语句,如果其他人遇到此问题,请使用PDO::exec

【讨论】:

    猜你喜欢
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 2020-11-22
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多