我在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,'"','"');
SET NEW.user_data = REPLACE(NEW.user_data,':',':');
SET NEW.user_data = REPLACE(NEW.user_data,';',';');
SET NEW.user_data = REPLACE(NEW.user_data,'{','{');
SET NEW.user_data = REPLACE(NEW.user_data,'}','}');
END
我第一次尝试通过从Chrome浏览器调用带有url的控制器来插入ci_sessions表时出现错误
错误号码:1415:不允许从触发器返回结果集
答案 0 :(得分:0)
我不认为此触发器与错误有任何关系。让我们举一个例子来帮助关注这个触发器。
-- 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,'"','"');
SET NEW.user_data = REPLACE(NEW.user_data,':',':');
SET NEW.user_data = REPLACE(NEW.user_data,';',';');
SET NEW.user_data = REPLACE(NEW.user_data,'{','{');
SET NEW.user_data = REPLACE(NEW.user_data,'}','}');
END //
delimiter ;
立即添加一些数据。注意结果看起来很好。
insert into ci_sessions_test values ('test'), ('testing;');
select * from ci_sessions_test;
Results:
user_data
----------
test
testing;
这表示触发器正常运行而不会导致错误。它还表明如果此表上还有其他触发器,则它们可能是导致错误的原因。在这些触发器中,如果您没有使用SELECT fields FROM ...
,请确保。如果您使用的是此类内容,则可能需要将其更改为SELECT fields INTO localvariablename FROM ...
。