2011-04-14 59 views
3

我有这样的代码通MySQL查询包含MySQL功能,PHP的mysql_query

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函数/ 我想这是因为该函数的失败和分号。我该怎么办?

+0

这将有助于发布你的代码和你得到的错误。 – jackbot 2011-04-14 11:45:26

回答

2

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') 

在三到数据库单独调用。

+0

谢谢,这工作! – dr3w 2011-04-14 11:53:44

+0

所以标记为正确... – dogmatic69 2011-04-14 12:15:37

+0

是的,我打算,但stackoverflow告诉我等待3分钟,虽然;)在这里你走... ... – dr3w 2011-04-14 12:26:53

0

你有DECLARE NextID INT;并返回NextID;和另一条线;在DELIMITER $$减速范围内。

我的建议是停止使用$$作为分隔符

+0

改为使用什么?你能以正确的方式重写代码吗? =] – dr3w 2011-04-14 11:47:17