Передать запрос mysql, содержащий функцию mysql, в PHP mysql_query - PullRequest
3 голосов
/ 14 апреля 2011

У меня есть этот код

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, но происходит сбой, когда я передаю этот запрос PHP-функции mysql_query / Полагаю, это из-за функции и точки с запятой . Что мне делать?

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011

DELIMITER не является ключевым словом MySQL: это зарезервированное слово, анализируемое клиентами (например, mysql, phpMyAdmin и т. Д.), Которое позволяет разбивать запросы.

Вы должны разделить еговручную и отправьте три запроса:

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 голосов
/ 14 апреля 2011

у вас есть ОБЪЯВЛЕНИЕ NextID INT;и ВЕРНУТЬ NextID;и еще одна строка с;внутри замедления DELIMITER $$.

Мой совет: прекратите использование $$ в качестве разделителя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...