mysql中触发器中分隔符_php – 在触发器中使用分隔符的Mysql错误

博客内容涉及在PHP中使用MySQL触发器的代码实现。作者遇到一个问题,当尝试通过PHP执行创建触发器的SQL语句时,代码无法正常工作,而在phpMyadmin中直接运行则没有问题。代码中包含了检查条件、更新和插入操作。作者怀疑问题可能出在SQL语句的格式化或执行方式上。
摘要由CSDN通过智能技术生成

这是我的

mysql触发器语句

DELIMITER |

CREATE TRIGGER kk AFTER UPDATE

ON location FOR EACH ROW

BEGIN

IF NEW.name not in(SELECT A.name FROM filter A WHERE (NEW.name = A.name))THEN

IF NEW.location_name != OLD.location_name THEN

INSERT INTO filter(old_location_name,new_location_name)

VALUES (OLD.location_name, NEW.location_name);

ELSE

UPDATE filter SET old_location_name = OLD.location_name , new_location_name = NEW.location_name WHERE name = OLD.name;

END IF;

ELSE

UPDATE filter SET old_location_name = OLD.location_name , new_location_name = NEW.location_name WHERE name = OLD.name;

END IF;

END;|

DELIMITER ;

当我在phpMyadmin中粘贴此代码时,这很好用.

在我的项目中

$sqlDrop = "DROP TRIGGER IF EXISTS `kk`";

$resDrop = parent::_executeQuery($sqlDrop);

echo $sql = "same above delimiter trigger query";

$rs = parent::_executeQuery($sql );

现在$sql语句在一行中回声

DELIMITER | CREATE TRIGGER kk AFTER UPDATE ON location FOR EACH ROW BEGIN IF NEW.name not in(SELECT A.name FROM filter A WHERE (NEW.name = A.name))THEN IF NEW.location_name != OLD.location_name THEN INSERT INTO filter(old_location_name,new_location_name,name) VALUES (OLD.location_name, NEW.location_name); ELSE UPDATE filter SET old_location_name = OLD.location_name , new_location_name = NEW.location_name WHERE name = OLD.name; END IF; ELSE UPDATE filter SET old_location_name = OLD.location_name , new_location_name = NEW.location_name WHERE name = OLD.name; END IF; END;| DELIMITER ;

并且不执行查询.当我在我的phpMyadmin中粘贴echoed语句时,它显示我的错误

gXbwd.png

那可能是什么问题.这是执行触发器查询的正确方法吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值