MySQL:不允许从触发器1415返回结果集

MySQL:不允许从触发器1415返回结果集,mysql,triggers,phpmyadmin,Mysql,Triggers,Phpmyadmin,我在xampp for windows上使用phpmyadmin创建了以下触发器 CREATE TRIGGER strip_ud_in BEFORE INSERT ON ci_sessions FOR EACH ROW BEGIN SET NEW.user_data = REPLACE(NEW.user_data,'"','&#34'); SET NEW.user_data = REPLACE(NEW.user_data,':','&#58'); SET NEW.user_dat

我在xampp for windows上使用phpmyadmin创建了以下触发器

CREATE TRIGGER strip_ud_in BEFORE INSERT ON ci_sessions
FOR EACH ROW
BEGIN
SET NEW.user_data = REPLACE(NEW.user_data,'"','&#34');
SET NEW.user_data = REPLACE(NEW.user_data,':','&#58');
SET NEW.user_data = REPLACE(NEW.user_data,';','&#59');
SET NEW.user_data = REPLACE(NEW.user_data,'{','&#123');
SET NEW.user_data = REPLACE(NEW.user_data,'}','&#125');
END
我第一次尝试在ci_sessions表中插入时,通过从我的chrome浏览器调用带有url的控制器,出现了错误

错误号:1415:不允许从触发器返回结果集


我认为这个触发器与错误无关。让我们举一个例子来帮助大家把注意力从这个触发器上移开

-- create a dummy table
create table ci_sessions_test (user_data varchar(100));

-- create the same kind of trigger on this dummy table
delimiter //

CREATE TRIGGER strip_ud_in_ci_sessions_test BEFORE INSERT ON ci_sessions_test
FOR EACH ROW
BEGIN
SET NEW.user_data = REPLACE(NEW.user_data,'"','&#34');
SET NEW.user_data = REPLACE(NEW.user_data,':','&#58');
SET NEW.user_data = REPLACE(NEW.user_data,';','&#59');
SET NEW.user_data = REPLACE(NEW.user_data,'{','&#123');
SET NEW.user_data = REPLACE(NEW.user_data,'}','&#125');
END //

delimiter ;
现在添加一些数据。请注意,结果看起来很好

insert into ci_sessions_test values ('test'), ('testing;');

select * from ci_sessions_test;

Results:
user_data
----------
test
testing&#59

这表明触发器功能正常,不会导致错误。它还表明,如果此表上有其他触发器,则它们可能是导致错误的原因。在这些触发器中,请确保如果您没有使用来自…的选择字段。。。。如果您使用的是类似的内容,您可能需要将它们更改为将字段从…选择为localvariablename。

在ci_会话上是否有其他触发器?我尝试用@ud variable替换NEW.user_数据,只保留了最后一个。也不管用。泽德福克斯,我真的管用。这有问题吗?!问题可能出在其他触发器上。据我所说,这个触发器没有问题。它很棘手。因为它是插入之前此事件的唯一触发器。