Символы перед которыми следует добавлять слэш в данных sql запроса | |
---|---|
RusMikle Сообщений: 717 Откуда: Muenster Дата регистрации: 10.04.2002 |
Привет всем!
посмотрите, ничего не забыл 1. Двойные или одинарные кавычки (или те или те в зависимости от того чем ограничиваю строки) 2. Квадратные скобки Какие ещё? Есть ли в фоксе функция которая добавляет слэш к таким символам? (наподобии addslashes() в php) если нет может уже кто то написал подобную? работа ведётся из php через OLEDB, в доке сколько не рыл ничего вразумительного, где обобщались бы все спец. символы, не нашел (может плохо рыл). Сейчас работаю через подстановки ( ? ) и слэши ставит сам фокс. Но в принципе хотелось бы разобраться т.к. через подстановки не всегда (в силу специфики программы) подходит (напр. когда sql запрос пишется в файл, отсылается и потом только выполняется) Исправлено 8 раз(а). Последнее : RusMikle, 22.04.10 15:14 |
Re: Символы перед которыми следует добавлять слэш в данных sql запроса | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Добавлять для чего? В фоксе никаких символов экранирования не существует! Для того и допускается 3 способа квотирования строк, чтобы подобрать в каждом конкретном случае такой, для которого не нужно будет "экранировать" разделители (т.к. их и нельзя то заэкранировать). Конечно если в строке одновременно все 3 или даже 4 символа имеются, то её никак нельзя передать - одной строкой как минимум.
При работе через ПАРАМЕТРЫ такой проблемы нет, т.к. собственно не нужно квотировать строки (а заодно нет проблемы с форматом десятичной точки для чисел, форматом даты и т.п.) Конечно же если речь идёт НЕ о фоксе - то нужно чётко обрисовать проблему ------------------ WBR, Igor |
Re: Символы перед которыми следует добавлять слэш в данных sql запроса | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
Фоксу не нужны никакие слэши.
------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. |
Re: Символы перед которыми следует добавлять слэш в данных sql запроса | |
---|---|
RusMikle Сообщений: 717 Откуда: Muenster Дата регистрации: 10.04.2002 |
Ещё бы объяснить пользователю при вводе что такие то и такие то символы нельзя писать т.к. я их использую для квотирования строк в запросе. Подменять пользовательские символы тоже не решение. Остаётся ставить слэш впереди. Значит нужна функция которая это автоматизирует. (напоминаю что работа ведётся из php через oledb и речь идёт о формировании sql запросов в строке). Проблема реальная, и ошибки связанные с вводом неподходявых символов имели место. |
Re: Символы перед которыми следует добавлять слэш в данных sql запроса | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
Регулярные выражения не подойдут для проверки?
------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. |
Re: Символы перед которыми следует добавлять слэш в данных sql запроса | |
---|---|
RusMikle Сообщений: 717 Откуда: Muenster Дата регистрации: 10.04.2002 |
У меня проблема не в том как заменить а в том что заменять.
Нет окончательной ясности. Напр. экранирование квадратных скобок не сразу пришло в голову, только после возникновения ошибки. Возможно ещё что то упустил. |
Re: Символы перед которыми следует добавлять слэш в данных sql запроса | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ещё раз - ВНУТРИ фоксовой системы никакого экранирования не существует! Т.е. в той команде которую ты посылаешь через ODBC/OLEDB не будут работать слэши-экраны - они будут приняты и сохранены как 2 отдельных символа!
При использовании параметризованных запросов проблем опять же НЕТ - т.е. пишем Update table1 set field1 = ?param1 where id = ?param2 - и внутри этих параметров не нужно никакого экранирования/замены - т.е. фоксу по барабану - будут там хоть все символы кавычек/апострофов/скобок - конечно же для КЛИЕНТСКОЙ среды - пхп или там ещё чего - вполне могут быть нужны свои символы экранирования... Если же кровь из носу нужно "в виде строки" - т.е. БЕЗ параметров команду сделать, то единственный вариант, это разбиение строки на части - например принимаем в качестве "основного" разделителя двойные кавычки - тогда произвольную строку обрабатываем так: делим на части по разделителю двойной кавычки (не включая их сами), каждую часть окружаем кавычками, а между частями вставляем блок +["]+ Возможно на примере будет понятнее... Исходная строка: asd"fgh'jkl[zxc]vbn'm,.""qwe Результат перевода в фоксовый литерал: "asd"+["]+"fgh'jkl[zxc]vbn'm,."+["]+["]+"qwe" Вводить кавычку можно и через +CHR(34)+ это уж кому как нравится Ещё потенциально проблемным будет символ амперсанта (т.к. это символ ввода макро). Хотя маловероятно что во время исполнения в контексте ODBC/OLEDB будет найдена хоть какая-то переменная но всё-же спокойствия ради можно и амперсанты таким макаром "экранировать". P.S. не наглядно когда рядом апострофы и кавычки, поменял на квадратные скобки... ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 23.04.10 21:55 |
Re: Символы перед которыми следует добавлять слэш в данных sql запроса | |
---|---|
Goodwin Автор Сообщений: 3539 Откуда: Омск Дата регистрации: 03.05.2006 |
Сам слеш тоже экранировать надо.
------------------ Что мы знаем о лисе? Ничего. И то не все. (С)Б. Заходер |
© 2000-2024 Fox Club  |