Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php5中,如何在具有分隔符的脚本中使用mysql_execute_Php_Mysql - Fatal编程技术网

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

在php5中,如何在具有分隔符的脚本中使用mysql_execute,php,mysql,Php,Mysql,有一个脚本,我可以复制并在mysql shell中运行,但在php5 mysql\u query中尝试相同的脚本时会爆炸。脚本的一部分: -- 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_i

有一个脚本,我可以复制并在mysql shell中运行,但在
php5 mysql\u query
中尝试相同的脚本时会爆炸。脚本的一部分:

-- 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 ;
引发错误:

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
应用于新模式。

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


测试表明,
mysql\u execute
无法接受分隔符命令

要使其工作,请将文件分成多个块,完全省去分隔符行。比如说,

    $procs = file_get_contents( '../sql/security.sql' ); 
    $procArr = preg_split( "/delimiter .*\n/", $procs );
另外,从剩余的块中删除集合分隔符“$$”

将每个非空块送入
mysql\u execute
——这很难看,但可以工作

    $procs = file_get_contents( '../sql/security.sql' ); 
    $procArr = preg_split( "/delimiter .*\n/", $procs );