[MySQL+PHP] 触发器及存储过程等MySQL功能在PHP中实现的坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[MySQL+PHP] 触发器及存储过程等MySQL功能在PHP中实现的坑相关的知识,希望对你有一定的参考价值。

折腾了一下午,始终没有能搞定在php中编写事件。

因为业务需求,需要实现一个预操作的功能,即业务人员填写未来的某个要做某个操作。在这个日期到来之前,则一切照常。

想通过PHP编写mysql Event,时间到了之后自动执行。

但碰到了几个致命的问题。

首先是多语句执行。

如果PHP中的query语句带;号,则MySQL直接将其当作query结束标识,query后面的语句就不管了,直接报SQL40006错误。

查找解决方案,提到是Delimeter的问题,可以通过指定其他的Delimeter,避免MySQL将;视为结束标识。

但是Delimeter是MySQL的CLI函数,通过PHP的接口传递根本无法识别。MySQL继续报错,不认识Delimeter。

查了StackOverflow,反正只见说不可以,没说怎么绕过这个问题去实现需求的。

想了想,准备将多个操作拆开来执行,新建多个EVENT。操作比较多,EVENT也就很多。但又碰到了一个问题,EVENT间的执行顺序是怎样的?

如果一个Event执行不成功,下一个依赖他的Event该如何处置?

感觉是个大BUG,这个需求或许就无法实现了。

以上是关于[MySQL+PHP] 触发器及存储过程等MySQL功能在PHP中实现的坑的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库Day01-数据库MySQL的基本概念

20-存储过程

mysql的存储过程和触发器的使用 以及php中的调用方法

存储过程

MySQL函数视图存储过程及触发器

[转]mysql查看所有触发器以及存储过程等操作集合