Есть ли способ выполнять параметризованные запросы в PHP 4 при использовании базы данных MSSQL?

Я выполняю некоторые работы по обслуживанию старой системы, на которой работает PHP 4 и которая общается с базой данных MS SQL2000 через FreeTDS. Я знаю, это уже звучит несколько страшно!

Большая часть кода использовала небезопасную конкатенацию строк для генерации SQL-запросов. Я проделал некоторую работу, чтобы попытаться отфильтровать ввод, чтобы сделать вещи более безопасными, но это вызывает у меня головную боль.

Мне интересно, есть ли что-то, что позволит мне выполнять правильные параметризованные запросы с учетом моей текущей настройки? На данный момент я не могу изменить версии PHP или MSSQL.


person Wally Lawless    schedule 23.04.2009    source источник


Ответы (2)


Если ваш основной интерес к параметризованным запросам — безопасность SQL-инъекций, я бы искал уровень абстракции базы данных, который предоставляет вам функциональные возможности и написан на чистом PHP. Я использовал ADOdb, и это достойный вариант, и похоже, что у них все еще есть старая версия PHP4. для скачивания.

Единственное предостережение в этом отношении заключается в том, что уровень абстракции может не выполнять «правильные» параметризованные запросы к вашей базе данных. Другими словами, они могли внедрить свой собственный механизм параметризации, а затем отправлять полные строки SQL в базу данных. Это важно для MS SQL Server, так как «правильные» параметризованные запросы могут значительно повысить производительность.

person Alan Storm    schedule 23.04.2009
comment
Потребовалось некоторое время для расследования, но ADOdb, похоже, работает хорошо. Спасибо за совет! - person Wally Lawless; 02.11.2009

Используйте уровень абстракции базы данных, такой как MDB2, который предоставляет их.

person ceejayoz    schedule 23.04.2009
comment
Это кажется хорошим вариантом, который я рассматривал раньше, хотя я не смог найти ссылку на то, что MDB2 будет работать с PHP4. Вы знаете, так ли это? - person Wally Lawless; 24.04.2009