Фактически, причина, по которой я всегда так делал, заключалась в том, что на всех моих сайтах по умолчанию была включена опция magic_quotes, и как только вы написали много кода, используя одно из этих двух решений, для его изменения потребуется много работы. к другому.

есколько возможностей начать разговор:

Сбросить все данные при инициализации.Избегайте каждого значения, предпочтительно при генерации SQL.

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

Второе решение имеет гораздо больше смысла, но ручное экранирование каждого значения - это боль.

Я в курсеподготовленные заявленияОднако я нахожуMySQLi громоздкий. Также меня беспокоит отделение запроса от входных данных, потому что, хотя очень важно получить правильный порядок, легко ошибиться и, таким образом, записать неправильные данные в неправильные поля.

Ответы на вопрос(5)

Решение Вопроса

параметризованные запросы - ваш лучший выбор. Если вы используете новейший и лучший PHP, я настоятельно рекомендую взглянуть наPDO Объекты данных PHP. Это нативная библиотека абстракции базы данных, которая поддерживает широкий спектр баз данных (включая, конечно, MySQL), а также подготовленные операторы с именованными параметрами.

потому что в 99% случаев переменные в$_GET, $_POST, а также$_COOKIE никогда не выводятся в браузер. Вы также никогда не будете ошибочно писать код с помощью SQL-инъекции (если только вы не используете кавычки в запросе), тогда как со вторым решением вы легко можете забыть в конечном итоге избежать одной из ваших строк.

Фактически, причина, по которой я всегда так делал, заключалась в том, что на всех моих сайтах по умолчанию была включена опция magic_quotes, и как только вы написали много кода, используя одно из этих двух решений, для его изменения потребуется много работы. к другому.

потому что вы можете делать ошибки!

Видетьэто вопрос.

но это еще не все. Это DBAL, и его сила (предположительно) в том, чтобы упростить переключение между поставщиками. Это не совсем сборка для ловли SQL-инъекций.

Во всяком случае, вы хотите избежать и санировать свои данные, использование подготовленных заявлений может быть хорошей мерой (я во-вторых). Хотя я считаю, что это намного проще, например, используяфильтр.

вать подготовленные операторы, вы, вероятно, хотите проверить функции PDO для PHP. Это не только позволяет легко запускать подготовленные операторы, но также позволяет вам быть немного более независимым от базы данных, не вызывая функции, начинающиеся с mysql_, mysqli_ или pgsql_.

Ваш ответ на вопрос