Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
Есть ли в Cache функция, которая бы экранировала символы строки перед её подстановкой в динамически-формируемый SQL-запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2010, 17:47 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
поясните ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2010, 18:14 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
У меня есть строка. Мне надо подставить её в SQL запрос. Для того, чтобы это сделать, надо заключить её в кавычки и заэкранировать специальные символы (например, те же кавычки). (PreparedStatement в данном случае не подходит) Как это сделать в Cache? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2010, 18:48 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
Не полностью уверен, но кажется может подойти $$Quote^%cspQuote(str) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2010, 20:06 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
smagen , в SQl двойные кавычки можно заменить на одинарные... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2010, 20:17 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
в Cache параметры для sql можно передавать отдельно, и там необязательно экранирование в плане безопасности, связанная она в частности с sql-инъекциями, динамически формируемый запрос с подстановкой параметров поиска прямо в запрос очень, небезопасно поэтому лучше передавать их отдельно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 08:18 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
Если в строке встречаются ковычки с апострофами - то IMXO никак. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 09:23 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
Автор хоть бы показал как он этот sql-запрос обрабатывает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 09:55 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
ну яНе полностью уверен, но кажется может подойти $$Quote^%cspQuote(str) Спасибо. Но судя по названию, не совсем то, что нужно. krvsa smagen , в SQl двойные кавычки можно заменить на одинарные... Не совсем понял, чем мне это поможет. DAiMorв Cache параметры для sql можно передавать отдельно, и там необязательно экранирование в плане безопасности, связанная она в частности с sql-инъекциями, динамически формируемый запрос с подстановкой параметров поиска прямо в запрос очень, небезопасно поэтому лучше передавать их отдельно Спасибо, капитан очевидность. Именно потому, что прямая подстановка строки в sql приводит к sql-инъекции, мне требуется заэкранировать там спецспиволы. :) PtnЕсли в строке встречаются ковычки с апострофами - то IMXO никак. Код: plaintext 1. Это выглядит ближе всего к тому, что нужно, хотя я расчитываел, что в Cache есть встроенная функция для решения этой задачи. krvsaАвтор хоть бы показал как он этот sql-запрос обрабатывает... Я считал что описанная задача тривиальна и поэтому детальное описание ситуации, в которой она возникает, не нужно. Вообще, я сильно удивлён. Какие бы до этого средства разработки и СУБД я ни использовал, функция, которая экранирует спецсимволы SQL запросто находилась в документации. С Cache же я не только не смог найти её самостоятельно, но даже запостив сообщение на форум, получил вместо простого ответа вроде "$$$SqlEscape, а вообще-то автору не мешало бы научиться пользоваться поиском", целый ряд комментариев, которые оставляют больше вопросов, чем ответов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 14:31 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
дело в том, что в каше нет смысла экранировать символы, поэтому и нету такого функционала нужно передавать параметрами отдельно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 14:51 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
DAiMorдело в том, что в каше нет смысла экранировать символы, поэтому и нету такого функционала нужно передавать параметрами отдельно Очень спорно. Про Cache я точно не знаю, а других базах есть сильное отличие между передачей параметров в prepared statement и подстановкой их напрямую в sql. Для prepared statement один раз строится план и дальше он уже исполняется с различными параметрами. А когда параметры напрямую подставляются в sql, то планировщик составляет план с учётом конкретных значений параметров, и этот план может радикально отличаться в лучшую сторону. Поэтому нужны оба способа подстановки параметров. Метод Execute класса %Library.ResultSet - отдельная песня. Почему нет возможности передавать параметры запроса как массив, а только как параметры метода? Почему их количество ограничено 16?! 640кб памяти хватит всем? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 15:04 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
smagenЯ считал что описанная задача тривиальна и поэтому детальное описание ситуации, в которой она возникает, не нужно. Т.е. примера мы и не увидим... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 15:10 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
smagenМетод Execute класса %Library.ResultSet - отдельная песня. Почему нет возможности передавать параметры запроса как массив, а только как параметры метода? Почему их количество ограничено 16?! 640кб памяти хватит всем? :) А ты письмо гневное напиши в ИС. А мы подпишемся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 15:12 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
отказываясь передавать параметрами вы себе еще больше гемора доставляете а насчет того что, такой запрос будет быстрее выполняться, по-моему нет, для этого можно сравнить генерируемый код, и уверен, что отличий не будет и %Library.ResultSet устарел при использовании с динамическими запросами пора переходить на %ResultSet.SQL он и работает значительно быстрее и параметры в него можно передавать массивом ограничения по передаче параметров выше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 15:15 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
DAiMorотказываясь передавать параметрами вы себе еще больше гемора доставляете а насчет того что, такой запрос будет быстрее выполняться, по-моему нет, для этого можно сравнить генерируемый код, и уверен, что отличий не будет Очень может быть, что Вы здесь правы. Я пока не проводил тесты, но по субъективным впечатлениям в Cache слабый планировщик, скорее всего он этого не учитывает. DAiMorи %Library.ResultSet устарел при использовании с динамическими запросами пора переходить на %ResultSet.SQL он и работает значительно быстрее и параметры в него можно передавать массивом ограничения по передаче параметров выше Спасибо за наводку, буду изучать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 15:25 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
DAiMorотказываясь передавать параметрами вы себе еще больше гемора доставляете а насчет того что, такой запрос будет быстрее выполняться, по-моему нет, для этого можно сравнить генерируемый код, и уверен, что отличий не будет и %Library.ResultSet устарел при использовании с динамическими запросами пора переходить на %ResultSet.SQL он и работает значительно быстрее и параметры в него можно передавать массивом ограничения по передаче параметров выше а не ошибся параметры нельзя массивом передавать, но зато там из можно передать больше 200 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 15:25 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
smagenДля prepared statement один раз строится план и дальше он уже исполняется с различными параметрами. А когда параметры напрямую подставляются в sql, то планировщик составляет план с учётом конкретных значений параметров, и этот план может радикально отличаться в лучшую сторону. Поэтому нужны оба способа подстановки параметров. Кэш Запросов Запрос: Код: plaintext 1. Код: plaintext 1. Код: plaintext 1. При сборе статистики по таблице, а также при других обстоятельствах, ранее закэшированные запросы удаляются. Поэтому формировать текст запроса: Код: plaintext PS: если Вы используете версию 2010.1 и выше, то предпочтительней пользоваться классом %SQL.Statement вместо %ResultSet.SQL и %Library.ResultSet . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 17:44 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
DAiMorа не ошибся параметры нельзя массивом передавать Можно ;) Собираем параметры Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 18:38 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
я имел ввиду стандартным способом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 18:57 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
и если уж на то пошло то тогда уж вот так :) Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 19:08 |
|
||
|
Экранирование строк перед подстановкой в SQL-запрос
|
|||
|---|---|---|---|
|
#18+
Ну раз пошла такая пьянка то вообще то можно напрямую указывать переменные Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. В принципе будет работать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2010, 20:16 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=36638329&tid=1558064]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 261ms |
| total: | 411ms |

| 0 / 0 |
