Форум: "Базы";
Текущий архив: 2007.09.23;
Скачать: [xml.tar.bz2];
Внизлюбая последовательность кавычек и символов в добавляемом тексте Найти похожие ветки
← →
Mysql (2007-05-17 17:35) [0]Как их инсертить в таблицу?
← →
Val © (2007-05-17 17:37) [1]как параметр?
← →
Mysql (2007-05-17 17:45) [2]pole - text
insert into table (pole) values ("последовательность символов");
последовательность символов = магазин "Цветочник", адрес ... возле метро "ccc"...
я имею в виду что сама строка текста может содржать любую последовательность..
← →
Mysql (2007-05-17 17:47) [3]т.е. как мне эту любую последовательность букв и символов нисертить чтобы сервер не ругался..
← →
Val © (2007-05-17 17:48) [4]все такие последовательности инсертят. давайте лучше о ругани сервера.
← →
Johnmen © (2007-05-17 17:55) [5]как параметр!
← →
Mysql (2007-05-17 17:57) [6]insert into table (pole) values ("aadasaasdasdas")
так ок
insert into table (pole) values ("aadas"aasdasdas")
а тка ругается:You have an error in your SQL syntax;
← →
Mysql (2007-05-17 17:59) [7]сама строка должна заключаться в кавычки или одинарные млм в двойные - но в ней внутри могут быть и те и те кавычки.. вот тут возникает ошибка..
← →
Val © (2007-05-17 17:59) [8]согласен с сервером.
если так попробовать:
как параметр.
в общем, знак препинания можете выбирать любой.
← →
Mysql (2007-05-17 18:10) [9]короче говоря нужно обрабатывать строку заменяя кавычки, чтобы они были нетакие как крайние (те что используются для синтаксиса).
а другой выход есть ?
типа внутренней функции сервера в которой в качестве параметра есть добавляемый текст и он его вставляет без ругни ?
вроде этого:
str_function(aaaa"bbb"ccc"ddd""" """);
← →
Плохиш © (2007-05-17 18:48) [10]Quotedstr
← →
Desdechado © (2007-05-17 19:37) [11]Мдя, разговор с глухим...
Еще раз - как параметр, а не как значение в запросе:Query.SQL.Text:="insert into table (pole) values (:P0)";
Query.Params[0].AsString:=твое_чего_не_попадя
← →
Mysql (2007-05-18 14:07) [12]
> Desdechado ©
Пасибо! Разобрался, просто еще не имел дела с параметрическими запросами..
но грубить не надо ;)
есть вопросик (:P0) после двоеточия может быть любое имя (последовательност букв :) ) ?
а то я че только туда не писал, все равно пашет =)
← →
Desdechado © (2007-05-18 15:27) [13]> я че только туда не писал, все равно пашет
Это имя параметра для обращения ParamByName("P0").AsString
Для удобочитаемости кода.
← →
Mysql (2007-05-18 15:58) [14]т.е. в том примере можно писать любое слово после двоеточия?
← →
Виталий Панасенко © (2007-05-18 16:06) [15]
> Mysql (18.05.07 15:58) [14]
> т.е. в том примере можно писать любое слово после двоеточия?
>
Нет, только после троеточия
← →
ANTPro © (2007-05-21 10:48) [16]Какие служебные символе еще существуют, которые не верно обрабатываются? Обработку " и \ я сделал.
ЗЫ: Или лучше переделать запросы на использование параметра?
← →
Desdechado © (2007-05-21 11:03) [17]> Или лучше переделать запросы на использование параметра?
Это единственное верное решение. Причем, в значительносй степени не из-за проблемы служебных символов.
> Какие служебные символе еще существуют
У каждой СУБД свои.
← →
ANTPro © (2007-05-21 11:05) [18]> [17] Desdechado © (21.05.07 11:03)
> У каждой СУБД свои.
MySQL
> [17] Desdechado © (21.05.07 11:03)
> Это единственное верное решение.
Да. Но так не охота переделывать запросы : )
← →
ANTPro © (2007-05-21 11:07) [19]Вот все запросы работают через эту функцию:
function TDM.SafeSQL(const SQL: string; Field: array of string): string;
var
i, Position, OldPosition, Len: Integer;
Buff: string;
begin
Len := Length(Field);
for i := 0 to Len - 1 do
begin
Field[i] := StringReplace(Field[i], "\", "\\", [rfReplaceAll]);
Field[i] := StringReplace(Field[i], """, "\"", [rfReplaceAll]);
end;
Buff := SQL;
Result := "";
OldPosition := 1;
for i := 1 to Len do
begin
Position := PosEx("[" + IntToStr(i) + "]", Buff, OldPosition);
Result := Result + Copy(Buff, OldPosition, Position - OldPosition) + Field[i - 1];
OldPosition := Position + Length("[" + IntToStr(i) + "]");
end;
Result := Result + Copy(Buff, OldPosition, Length(Buff) - 1);
end;
---
Действительно она безопасная? : )
← →
ANB © (2007-05-21 11:46) [20]
> Действительно она безопасная? : )
Нет.
Это не раздел "Начинающим".
Верный способо уже указан.
Для глухих повторяю - рация на танке !!! (С) Стырено.
← →
Itonix © (2007-05-21 23:48) [21]а не проще ли quotedstr ?
← →
Mysql (2007-05-22 20:30) [22]
> Itonix © (21.05.07 23:48) [21]
> а не проще ли quotedstr ?
может и проще но надежнее через параметры.
p.s. пробовал через эту функцию - не работает..
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.09.23;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.042 c