Php sql过程导入错误

Php sql过程导入错误,php,mysql,Php,Mysql,我试图使用PHP导入上述代码,但出现以下错误: 执行查询“”时出错:SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行使用near'DELIMITER$$drop procedure(如果存在)的正确语法simpleproc$$CREATE procedure'simplepro' 上述语法只能在MySQL命令行客户端执行。 使用服务器端脚本语言也无法实现同样的效果 相反,您可以使用以下字符串来构造查询,并传递到mysqli->query DELIMITER $$ dr

我试图使用PHP导入上述代码,但出现以下错误:

执行查询“”时出错:SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行使用near'DELIMITER$$drop procedure(如果存在)的正确语法
simpleproc
$$CREATE procedure'simplepro'


上述语法只能在
MySQL
命令行客户端执行。
使用服务器端脚本语言也无法实现同样的效果

相反,您可以使用以下字符串来构造
查询
,并传递到
mysqli->query

DELIMITER $$
drop procedure IF EXISTS `simpleproc`$$
CREATE PROCEDURE `simpleproc`(OUT param1 INT)
BEGIN
SELECT COUNT(*) INTO param1 FROM t;
END $$
DELIMITER ;
注意
如果存储过程中只有一条语句需要处理和执行, 您甚至不需要
开始
-
结束

这是正确的:

CREATE PROCEDURE simpleproc (OUT param1 INT )
BEGIN
    SELECT COUNT(*) INTO param1 FROM t;
END;

您的过程语法有错误,请使用以下命令

CREATE PROCEDURE simpleproc (OUT param1 INT )
    SELECT COUNT(*) INTO param1 FROM t;

这将解决您的问题

这段代码是您自己编写的还是您只是从某处复制的?这段代码位于sql文件中,我想将其导入mysqlRavinder感谢您的回复,但即使是像
DELIMITER$$Drop procedure这样的简单查询,如果存在simpleproc$$DELIMITER未被导入。我正在使用一行简单的代码,如
$commands=file\u get\u contents($filename);mysql\u query($commands)
它是一组语句,但不是单个语句。我不认为我们可以在一次调用中使用php在mysql中执行多个语句。相反,您可以直接从php尝试
DROP…
语句,它应该可以工作。我确实尝试了ravinder,但如果存在simpleproc$$DELIMITER,则没有运气
DELIMITER$$DROP过程好朋友。但我认为作为数据库级别,它应该可以工作。@vivek你能告诉我错误是什么吗?因为我在本地数据库中运行了它,它工作得很好。是的,当我将它放在mysql中时,它直接工作,但不是通过php。@vivek将分隔符设置为
以外的值
by
分隔符$$
不是sql命令;这是一个mysql shell命令。如果您试图通过php定义一个存储过程(不确定为什么要这样做,或者即使有可能),您必须弄清楚如何使用php的db api更改行分隔符,这样您就可以在sql中嵌入分号,而不用mysql将其解释为命令分隔符。(我不使用php——我不知道答案)
DELIMITER $$;

DROP PROCEDURE IF EXISTS `simpleproc`$$

CREATE PROCEDURE `simpleproc` (OUT param1 INT)
BEGIN
    SELECT COUNT(*) INTO param1 FROM t;
END$$

DELIMITER ;$$
DELIMITER $$

DROP PROCEDURE IF EXISTS `simpleproc`$$

CREATE PROCEDURE `simpleproc`(OUT param1 INT)

READS SQL DATA

BEGIN

SELECT COUNT(*) INTO param1 FROM t;

END $$

DELIMITER ;$$