首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php5中,如何在具有分隔符的脚本中使用mysql_execute

在php5中,如何在具有分隔符的脚本中使用mysql_execute
EN

Stack Overflow用户
提问于 2011-10-07 05:39:47
回答 2查看 497关注 0票数 0

有一个脚本,我可以在mysql中复制和运行,但是在php5 mysql_query中尝试相同的脚本时会爆炸。脚本的一部分:

代码语言:javascript
复制
-- sync shadow with users
drop trigger users_post_insert;
delimiter $$
create trigger users_post_insert after insert on users
    for each row
begin   
    insert into shadow( usr_id ) values( new.usr_id );
end$$
delimiter ;

引发错误:

代码语言:javascript
复制
You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near
'delimiter $$\ncreate trigger users_post_insert after insert
on users\n\tfor each ro' at line 8

同样,使用PostgresQL和Oracle执行了类似的脚本文件,因此这让我措手不及。

MySQL脚本在运行之前是否需要通过regex传递,或者什么?

这些脚本已经调试,然后通过php应用于新模式。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-07 14:00:52

测试表明mysql_execute不能接受分隔符命令。

要使其工作,将文件分割成块,完全省略分隔符行。例如,

代码语言:javascript
复制
    $procs = file_get_contents( '../sql/security.sql' ); 
    $procArr = preg_split( "/delimiter .*\n/", $procs );

另外,从其余块中移除设置分隔符"$$“。

将每个非空块输入mysql_execute --这很难看,但很有效。

票数 0
EN

Stack Overflow用户

发布于 2011-10-07 05:55:08

在执行命令之前,您可能需要先定义分隔符,并确保删除了已经创建的触发器(或只使用if存在子句),尝试以下操作

代码语言:javascript
复制
-- sync shadow with users
delimiter $$
drop trigger if exists users_post_insert;$$
create trigger users_post_insert after insert on users
    for each row
begin   
    insert into shadow( usr_id ) values( new.usr_id );
end;$$
delimiter ;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7683431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档