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 для немедленного выполнения. Он НЕ поддерживает подготовленные заявления, поэтому вам нужно будет дезинфицировать данные, включенные в строку.