Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

любая последовательность кавычек и символов в добавляемом тексте [MySQL]


Страницы:   1 2

Mysql ©   (2007-05-17 17:35:00) 

Как их инсертить в таблицу?


Mysql   (2007-05-22 20:30:00) [1]


> Itonix ©   (21.05.07 23:48) [21]
> а не проще ли quotedstr ?


может и проще но надежнее через параметры.

p.s. пробовал через эту функцию - не работает..


Itonix   (2007-05-21 23:48:00) [2]

а не проще ли quotedstr ?


ANB   (2007-05-21 11:46:00) [3]


> Действительно она безопасная? : )

Нет.
Это не раздел "Начинающим".
Верный способо уже указан.

Для глухих повторяю - рация на танке !!! (С) Стырено.


ANTPro   (2007-05-21 11:07:00) [4]

Вот все запросы работают через эту функцию:
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;

---
Действительно она безопасная? : )


ANTPro   (2007-05-21 11:05:00) [5]

> [17] Desdechado ©   (21.05.07 11:03)
> У каждой СУБД свои.

MySQL


> [17] Desdechado ©   (21.05.07 11:03)
> Это единственное верное решение.

Да. Но так не охота переделывать запросы : )


Desdechado   (2007-05-21 11:03:00) [6]

> Или лучше переделать запросы на использование параметра?
Это единственное верное решение. Причем, в значительносй степени не из-за проблемы служебных символов.

> Какие служебные символе еще существуют
У каждой СУБД свои.


ANTPro   (2007-05-21 10:48:00) [7]

Какие служебные символе еще существуют, которые не верно обрабатываются? Обработку " и \ я сделал.
ЗЫ: Или лучше переделать запросы на использование параметра?


Виталий Панасенко   (2007-05-18 16:06:00) [8]


> Mysql   (18.05.07 15:58) [14]
> т.е. в том примере можно писать любое слово после двоеточия?
>

Нет, только после троеточия


Mysql   (2007-05-18 15:58:00) [9]

т.е. в том примере можно писать любое слово после двоеточия?


Desdechado   (2007-05-18 15:27:00) [10]

> я че только туда не писал, все равно пашет
Это имя параметра для обращения ParamByName('P0').AsString
Для удобочитаемости кода.


Mysql   (2007-05-18 14:07:00) [11]


> Desdechado ©


Пасибо! Разобрался, просто еще не имел дела с параметрическими запросами..
но грубить не надо ;)

есть вопросик (:P0) после двоеточия может быть любое имя (последовательност букв :) ) ?

а то я че только туда не писал, все равно пашет =)


Desdechado   (2007-05-17 19:37:00) [12]

Мдя, разговор с глухим...
Еще раз - как параметр, а не как значение в запросе:
Query.SQL.Text:='insert into table (pole) values (:P0)';
Query.Params[0].AsString:=твое_чего_не_попадя


Плохиш   (2007-05-17 18:48:00) [13]

Quotedstr


Mysql   (2007-05-17 18:10:00) [14]

короче говоря нужно обрабатывать строку заменяя кавычки, чтобы они были нетакие как крайние (те что используются для синтаксиса).

а другой выход есть ?
типа внутренней функции сервера в которой в качестве параметра есть добавляемый текст и он его вставляет без ругни ?

вроде этого:

str_function(aaaa"bbb'ccc'ddd""" ''');


Val   (2007-05-17 17:59:00) [15]

согласен с сервером.
если так попробовать:
как параметр.

в общем, знак препинания можете выбирать любой.


Mysql   (2007-05-17 17:59:00) [16]

сама строка должна заключаться в кавычки или одинарные млм в двойные - но в ней внутри могут  быть и те и те кавычки.. вот тут возникает ошибка..


Mysql   (2007-05-17 17:57:00) [17]

insert into table (pole) values ("aadasaasdasdas")
так ок

insert into table (pole) values ("aadas"aasdasdas")
а тка ругается:You have an error in your SQL syntax;


Johnmen   (2007-05-17 17:55:00) [18]

как параметр!


Val   (2007-05-17 17:48:00) [19]

все такие последовательности инсертят. давайте лучше о ругани сервера.


Mysql   (2007-05-17 17:47:00) [20]

т.е. как мне эту любую последовательность букв и символов нисертить чтобы сервер не ругался..


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо