Какие параметры я должен объявить как заполнители sql? - PullRequest
0 голосов
/ 23 сентября 2011

Должен ли я использовать заполнитель для каждого параметра, даже если он всегда один и тот же? А как насчет нулей? Должен ли я использовать заполнители для них также?

Меня интересует, как избежать подготовки и включения кэширования запроса. Я использую mysql, php и pdo, но я думаю, что то же самое относится и к другим базам данных. Безопасность не является сделкой, потому что параметры в вопросе жестко закодированы.

Случай 1: должен ли я использовать заполнитель для видимости или лучше закодировано значение 1? выберите * из таблицы, где видимость = 1 и продукт =: id

Случай 2: я должен использовать заполнитель для нуля? (и одинаково ли для обоих случаев?) выберите * из t1, где цвет равен нулю обновить t1 set color = null, где product =: id

1 Ответ

1 голос
/ 23 сентября 2011

если параметры жестко закодированы, заполнители не используются вообще.
Кэширование запросов по умолчанию включено в mysql, так что вам не о чем беспокоиться.

Таким образом, если динамически измененных параметров действительно нет, то при подготовке и выполнении не имеет смысла. Просто используйте метод запроса PDO.

Однако вопрос из вашего названия Which parameters should I declare as sql placeholders? гораздо интереснее.

с точки зрения этой неуклюжей библиотеки PDO, вы должны использовать заполнители только для данных. но с точки зрения динамического создания SQL-запросов вы должны использовать соответствующие заполнители для каждой переменной части запроса.

...