TL: DR
Выполняет ли sqlsrv_query() одно и то же задание для операторов select чем sqlsrv_prepare() и sqlsrv_execute() , в отношении подготовленных операторов?
Как я могу сделать предложение безопасного select ?
Немного истории
Я новичок в разработке PHP, и у меня есть старое (не OO) PHP-приложение для поддержки и реорганизации всех этих кодов спагетти. Фактически, я создал репозиторий и абстракцию службы, чтобы немного помещать Ориентацию объектов внутри проекта в разделенную область, не вникая в то, что работает в наши дни.
Я сделал эту абстракцию, учитывая будущее включение PDO. Сегодня я просто реорганизую код по шагам. Доктрина и другие ОРМ сегодня не являются опцией (решение Менеджера проекта, к сожалению … не моя ошибка).
Ну, мы используем здесь драйвер sqlsrv , и я видел, как подготовить и выполнить инструкцию для операций insert или update . Возникает вопрос: как я мог подготовить инструкцию select для выполнения (помогая предотвратить атаки с sqlsrv_prepare() первого порядка), аналогично я использую sqlsrv_prepare() и sqlsrv_execute() ?
Конфигурации: PHP 5.3, Sql Server.
Заранее спасибо!
Они разные.
http://php.net/manual/en/function.sqlsrv-prepare.php
Готовит запрос для выполнения
http://php.net/manual/en/function.sqlsrv-query.php
Подготавливает и выполняет запрос .
В подготовленных операторах вы отправляете запрос и параметры отдельно. Таким образом, вам нужны два отдельных вызова (с sqlsrv_execute, обеспечивающим другой конец этого дуэта).
sqlsrv_query() просто отправляет SQL для немедленного выполнения. Он НЕ поддерживает подготовленные заявления, поэтому вам нужно будет дезинфицировать данные, включенные в строку.