Я хотел бы предоставить необязательные аргументы для компонента ColdFusion, используя только CFScript, сохраняя при этом использование ColdFusion QueryParam SQL.Дополнительные аргументы CFScript и ColdFusion
Пример А: Получение информации от базовой user.cfm для всех пользователей:
<cfset get = application.controller.getuser()>
Пример B: Необязательно, используя тот же метод. ? Получение информации от базовой пользовательского edit.cfm редактировать = 662B2709-0BA3-42DB-AD2CC29069F4A259 для конкретного пользователя:
<cfset get = application.controller.getuser(userUID=url.edit)>
Пример С: С другой стороны, используя тот же метод, чтобы найти конкретный первый имя:
<cfset get = application.controller.getuser(firstname=form.firstname)>
CFC ВОПРОС: Ниже мой controller.cfc. Я хотел бы сохранить «AND userUID =: userUID» в качестве дополнительного CFQueryParam, который появляется, когда запрашивается только по запросу моего сценария.
public function getuser(userUID='', password='', firstname=''){
var get = new query();
// query
get.setSQL("
SELECT *
FROM users
WHERE 1 = 1
AND userUID = :userUID
AND firstname = :firstname
AND passhash = :password
");
if (len(arguments.userUID) > 0)
get.addParam(name = "userUID", value = "#arguments.userUID#", cfsqltype = "cf_sql_varchar");
if(len(arguments.firstname) > 0)
get.addParam(name = "firstname", value = "#arguments.firstname#", cfsqltype = "cf_sql_varchar");
if (len(arguments.password) > 0)
get.addParam(name = "password", value = "#arguments.password#", cfsqltype = "cf_sql_varchar");
return get.execute();
}
Используйте условную логику для создания переменной с помощью вашего sql. Затем используйте эту переменную в методе get.setSQL. –
Что такое «проблема»? Вы спрашиваете, как построить строку sql? Если да, постройте его условно, как и с параметрами. Затем передайте окончательную строку в 'setSQL (...)'. В противном случае, пожалуйста, уточните свой вопрос? Обязательно включайте любые сообщения об ошибках. – Leigh
В вашей логике вы можете использовать 'len (trim (arguments.userID))' (и для других переменных), как написано в настоящее время, пробел (или несколько пробелов) пройдет мимо логики. –