ColdFusion/mySQL — кавычки и апострофы

У меня возникла проблема при вставке данных в базу данных mySQL с помощью приложения ColdFusion. Я пробовал ЗАМЕНИТЬ и СОХРАНИТЬ ОДИНОЧНЫЕ КАвычки и несколько других вещей, но я потерялся на этом этапе.

Это в основном везде, где у меня есть текстовое поле или текстовое поле в форме - пользователям не разрешено использовать кавычки в полях (ошибка отправляется обратно - у вас есть ошибка в синтаксисе SQL;) и когда используется апостроф, он получает удваивается (слово, подобное слову Марка, превращается в Марка)

Любая помощь будет оценена по достоинству. Моя голова вот-вот взорвется.


РЕШЕНИЕ: cfqueryparam


person Big Mike    schedule 15.05.2014    source источник


Ответы (2)


Вы должны использовать cfqueryparam Что-то вроде этого будет работать

<cfset userEnteredData = "I'm using apostrophes">

<cfquery>
INSERT INTO data (userText)
VALUES (<cfqueryparam cfsqltype="cf_sql_varchar" value="#userEnteredData#">)
</cfquery>

ИЗМЕНИТЬ

Сделайте это по трем причинам:

  1. Это создает "переменную связывания", которая (среди прочего) защищает от Атаки SQL Injection.
  2. CFQUERYPARAM автоматически экранирует кавычки и апострофы.
  3. Если вы передаете список переменных, он корректно выйдет из списка на основе cfsqltype, если вы используете атрибут list.
person Matt Busche    schedule 15.05.2014
comment
Причина 4 - может ускорить время выполнения запроса, если указанный запрос выполняется часто. - person Dan Bracuk; 16.05.2014
comment
Спасибо большое. Работал как шарм. - person Big Mike; 17.05.2014

Всегда используйте cfqueryparam... Это решит вашу проблему и сделает ваше приложение более безопасный.

person Chris Tierney    schedule 15.05.2014
comment
Проголосовал за, потому что он был отправлен за две минуты до ответа Мэтта. - person Dan Bracuk; 16.05.2014