2011-04-14 60 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