[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: изменить delimiter
mskorok
При попытке выполнить mysql_query("delimiter $", $dbc) выдает ошибку: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'delimiter $' at line 1. Есть ли какая-то возможность изменить делимитер средствами PHP? sad.gif



Спустя 50 минут, 38 секунд (24.03.2010 - 09:36) sergeiss написал(а):
У тебя в строке есть знак доллара (обязательный первый символ в имени переменной), и строка в двойных кавычках. ПХП пытается интерпретировать эту строку. Поэтому и ошибка.
Поставь в одинарных кавычках '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 на предмет доступности смены делиметра ? ну, так, на всякий случай smile.gif

Спустя 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 написал(а):
Спасибо за замечание, Вы можете его оставить там же, на форуме, когда дойдут руки - сделаю wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.