В принципе, у нас есть сайт ASP прямо сейчас, когда я перехожу к PHP. Мы все еще используем сервер MSSQL для БД - он не движется.Сохраненная процедура: переменная, переданная из PHP, изменяет вторую половину строки запроса
В ASP теперь есть файл include с запросом гигантского sql, который выполняется. Сюда входит сидение на многих страницах, и это простая версия того, что происходит. Страницы A, B и C используют этот файл include для возврата списка.
В ASP, страница А проходит через переменную A в файл include - страница B проходит через переменную B - страница C проходит через переменную C и т. Д.
инклюдник строит SQL запрос следующим образом:
sql = "SELECT * from table_one LEFT OUTER JOIN table_two ON table_one.id = table_two.id"
добавляет (помните, ASP), на основе переменного, переданных через от родительской страницы,
Select Case sType
Case "A"
sql = sql & "WHERE LOWER(column_a) <> 'no' AND LTRIM(ISNULL(column_b),'') <> '' ORDER BY column_a
Case "B"
sql = sql & "WHERE LOWER(column_c) <> 'no' ORDER BY lastname, firstname
Case "C"
sql = sql & "WHERE LOWER(column_f) <> 'no' OR LOWER(column_g) <> 'no' ORDER BY column_g
As вы заметите, что каждая строка, добавленная в качестве второй части запроса sql, отличается от предыдущей; не может быть заменена не одна переменная, и это то, что меня озадачило.
Как перевести этот регистр/переключатель в хранимую процедуру на основе ввода varchar, который я передаю в хранимую процедуру через PHP?
Эта хранимая процедура будет обрабатывать список запросов примерно на 20 страницах, так что он здоровенный, и это мой первый сложный сложный вопрос. Хотя я добираюсь туда! Я тоже больше привык к MySQL. Не то чтобы они разные. : P
Благодарим вас за помощь.
Стефани
ха-ха. Эта динамическая SQL-страница очень длинная, но я буду читать, что смогу. Я определенно знаю опасности инъекций, поэтому я ценю это. Кроме того, вы полностью выигрываете не только для распечатанного кода, но и для комикса XKCD. Спасибо. –