LINUX.ORG.RU

Откуда берется пробел в таблице MYSQL?

 ,


0

1

Есть скрипт, который вносит в таблицу значение, которое почему-то присваивается с пробелом впереди. mysql -u root -pPASSWORD -D database -e «UPDATE table SET status=‘$1’ WHERE num=$2» Номер 444 с пробелом - сюда внес значение скрипт. Так вот перед ANSWER появляется пробел только в том случае, когда update делаю через bash-скрипт. Откуда он берется? +—–+————-+ | num | status | +—–+————-+ | 444 |(тут появляется пробел)ANSWER |



Последнее исправление: proxxs (всего исправлений: 4)

Ты чё, упырь, член проглотил? Давай отвечай или тебе несдобровать.

anonymous
()

Я не ебу в SQL, но в HTML подобная хуйня случается когда у тебя элементы были так:

el1
el2

а так их решил перехуячить в такое:

el1el2

По факту же выходит

el1 el2
anonymous
()
Ответ на: комментарий от anonymous

не понял, что имеется в виду. Если делаю в скрипте так: echo $1 > 111 то ANSWER без пробелов. Если вношу скриптом в таблицу, то появляется пробел. mysql -u root -pPASSWORD -D database -e «UPDATE table SET status=‘$1’ WHERE num=$2» Причем только на тексте. Цифры вносятся без пробела на зависимо от того есть '' вокруг переменной или нет.

proxxs
() автор топика
Ответ на: комментарий от proxxs

Пробел добавляется где-то в вашем скрипте, ни консольный мускул клиент, ни тем более сервер его не добавляют

goingUp ★★★★★
()

The Bash manual has this to say:

3.1.2.2 Single Quotes

Enclosing characters in single quotes (’) preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.

3.1.2.3 Double Quotes

Enclosing characters in double quotes (") preserves the literal value of all characters within the quotes, with the exception of $, , \, and, when history expansion is enabled, !. The characters $ and retain their special meaning within double quotes (see Shell Expansions). The backslash retains its special meaning only when followed by one of the following characters: $, `, ", , or newline. Within double quotes, backslashes that are followed by one of these characters are removed. Backslashes preceding characters without a special meaning are left unmodified. A double quote may be quoted within double quotes by preceding it with a backslash. If enabled, history expansion will be performed unless an ! appearing in double quotes is escaped using a backslash. The backslash preceding the ! is not removed.

The special parameters * and @ have special meaning when in double quotes (see Shell Parameter Expansion).

ps. подробней выгугливай цитату so

qulinxao3
()
Ответ на: комментарий от proxxs

судя по echo $1 у тя пробел в значении $1 которое тримится при парсинге аргументов эчо но остаётся в кавычках когда ‘$1’ в крокодиле

qulinxao3
()

А точно пробел, а не перевод строки? Его echo добавляет.

Begemoth ★★★★★
()
Ответ на: комментарий от qulinxao3

Проблема была в самом аргументе $1. Из астериска значение передавалось вместе с пробелом. Было так:

AGI(scriptName, ${DIALSTATUS}, ${CALLERID(dnid)})

Убрал пробелы между переменными и все стало хорошо. Теперь так:

AGI(scriptName,${DIALSTATUS},${CALLERID(dnid)})

Странно что при передаче $1 из скипта в файл, пробела не было. Появлялся он только в таблице mysql.

Все откликнувшимся - спасибо!

proxxs
() автор топика
Ответ на: комментарий от proxxs

Странно что при передаче $1 из скипта в файл, пробела не было

Не странно. Первый же совет от анона был правильный, но ты его проигнорировал.

legolegs ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.