
Спустя 50 минут, 38 секунд (24.03.2010 - 09:36) sergeiss написал(а):
У тебя в строке есть знак доллара (обязательный первый символ в имени переменной), и строка в двойных кавычках. ПХП пытается интерпретировать эту строку. Поэтому и ошибка.
Поставь в одинарных кавычках 'delimiter $' - для ПХП это совершенно другая строка.
Поставь в одинарных кавычках 'delimiter $' - для ПХП это совершенно другая строка.
Спустя 7 минут, 9 секунд (24.03.2010 - 09:43) mskorok написал(а):
Сэнкс, а слона то не приметил!
Спустя 19 минут, 40 секунд (24.03.2010 - 10:03) mskorok написал(а):
К сожалению, проблема не решается. (кроме изменения типа кавычек пробовал менять делимитер на % или //, результат тот же.check the manual that corresponds to your MySQL server version for the right syntax to use near 'delimiter //' at line 1)
Спустя 12 минут, 48 секунд (24.03.2010 - 10:16) jetistyum написал(а):
может действительно стоит прислушаться, и проверить версию MySQL на предмет доступности смены делиметра ? ну, так, на всякий случай

Спустя 6 минут, 23 секунды (24.03.2010 - 10:22) mskorok написал(а):
через phpadmin все проходит без проблем, делимитер меняется и процедура записывается и выполняется. сложности начинаются, когда тоже самое пытаюсь запустить через mysql_query
Спустя 34 минуты, 10 секунд (24.03.2010 - 10:56) jetistyum написал(а):
вот, нагуглил... (видимо кому-то было лень!!!)
Цитата |
Right, problem's obvious really: There's never any need to use "delimiter" in an API call, as delimiters aren't used - separate calls are made instead. So the following code works just fine: $link = mysql_connect('localhost', 'root', 'pass'); mysql_select_db( 'test' ); $ret = mysql_query( 'DROP FUNCTION IF EXISTS `anti_space` '); if( !$ret ) echo mysql_error($link); $ret = mysql_query( 'CREATE FUNCTION `anti_space` ( inString VARCHAR(1000), replaceThis VARCHAR(1000), replaceWith VARCHAR(1000) ) RETURNS VARCHAR(1000) DETERMINISTIC BEGIN DECLARE _outString VARCHAR(1000) DEFAULT TRIM(inString); DECLARE _length INT DEFAULT LENGTH(_outString); DECLARE _doneLoop BOOLEAN DEFAULT FALSE; DECLARE _lengthNext INT DEFAULT 0; IF ( _length != 0 ) THEN WHILE (! _doneLoop AND _length != 0 ) DO SET _outString = REPLACE( _outString, replaceThis, replaceWith ); SET _lengthNext = LENGTH(_outString); SET _doneLoop = (_lengthNext = _length); SET _length = _lengthNext; END WHILE; END IF; RETURN _outString; END', $link ); D'oh. Hope that helps someone. Andy |
Спустя 1 час, 2 минуты, 55 секунд (24.03.2010 - 11:59) mskorok написал(а):
Спасибо огромное! Зарегистрировался на вашем форуме. Есть замечание по форме регистрации, когда возвращаешься при ошибке, не сохраняет данных. Может увеличивать процент отказов при регистрации.
Спустя 28 минут, 30 секунд (24.03.2010 - 12:28) jetistyum написал(а):
Спасибо за замечание, Вы можете его оставить там же, на форуме, когда дойдут руки - сделаю
