Программирование > Регулярные выражения

Как РВ помогают при работе с MsSQL

(1/2) > >>

Yukko:
Для работы с MySQL в PHP есть функция addslashes(), которая обрабатывает sql
запрос (другую подобную строку), ставя перед ",\',NULL, \\ обратный слэш \\
НО! Если есть необходимость сделать тоже самое под MsSQL, Oracle (не проверено,
но стоит попробовать, там такие же требования к запросам!) то надо поступать
по-другому, потому чтобы вставить в MsSQL одиночную кавычку, надо ее удвоить, двойная кавычка пишется без экранирования...

MsSQL принимает запросы в виде:

INSERT INTO dbo.USERS (UserName,) VALUES (\'yukko10\')

Т.е. строки обрамляются одиночными кавычками.
Чтобы вместо yukko10 вставить yukko\'s10 надо удвоить кавычку и написать:

INSERT INTO dbo.USERS (UserName,) VALUES (\'yukko\'\'10\')

Лень! Да и к тому же все входящие данные, которые пойдут в БД,
надо обработать на предемет присутсвия одиночной кавычки.
Автоматизируем процесс!
Код:

   $query = "INSERT INTO dbo.USERS (UserName,) VALUES (\'yukko\'10\')";
   $query = preg_replace("/(?

Макс:
по поводу удвоения кавычек, глянь в php.ini :

--- Цитировать ---; Use Sybase-style magic quotes (escape \' with \'\' instead of \\\').
magic_quotes_sybase = Off
--- Конец цитаты ---

Yukko:

--- Цитировать ---Макс:
по поводу удвоения кавычек
--- Конец цитаты ---

ИМХО, если magic_quotes_sybase = On, MsSQL не пропустит... получится запрос типа
INSERT INTO dbo.USERS (UserName,) VALUES (\'\'yukko\'\'\'\'10\'\')
что недопустимо!
либо я чего-то не понял...
это можно делать с отдельными значениями, например yukko\'s будет преобразовано в yukko\'\'s после вставки в запрос все будет правильно, но я на рег передаю весь запрос и не беспокоюсь про замену \' на \'\' в каждой отдельной строке, если не прав, то поправь...

Yukko:
Тем более, что РВ не только в РНР есть... :)

Макс:
чесно говоря, идея обрабатывать весь запрос регом мне интуитивно не нравится (пока не могу объяснить почему). Меня всегда устравиала обработка отдельных строк используемых в запросе.

Кстати, обычно в системах регистрации пароли хешируются

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 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 
Перейти к полной версии