我有这个密码

DELIMITER $$
DROP FUNCTION IF EXISTS `GetNextID` $$
CREATE FUNCTION `GetNextID`() RETURNS INT DETERMINISTIC
BEGIN
DECLARE NextID INT;
SELECT MAX(articleID) + 5 INTO NextID FROM table_article;
RETURN NextID;
END$$
DELIMITER ;

INSERT INTO table_article ( articleID, articleAlias ) VALUES ( GetNextID(), 'TEST' );

在phpMyAdmin中执行ok,但当我将此查询传递给mysql_query php函数时失败/
我猜这是因为函数和分号。我该怎么办?

最佳答案

DELIMITER不是MySQL关键字:它是客户端解析的保留字(如mysqlphpMyAdmin等),允许拆分查询。
您应该手动拆分它并提交三个查询:

DROP FUNCTION IF EXISTS `GetNextID`


CREATE FUNCTION `GetNextID`() RETURNS INT DETERMINISTIC
BEGIN
DECLARE NextID INT;
SELECT MAX(articleID) + 5 INTO NextID FROM table_article;
RETURN NextID;
END


INSERT INTO table_article ( articleID, articleAlias ) VALUES ( GetNextID(), 'TEST' )

在三个单独的数据库调用中。

09-26 07:38