Я недавно начал использовать cfscript
в своих проектах. При работе с cfscript
я использовал функцию queryExecute()
для выполнения запросов. В нескольких ситуациях было несколько запросов в одной и той же функции. Эти запросы имеют одни и те же параметры. Мне было интересно, могу ли я иметь одну структуру, которая будет содержать все параметры для всех запросов. Вот что я попробовал:
local.qryParams = structNew();
structAppend(qryParams, {rec_id = {cfsqltype="cf_sql_numeric", value="#arguments.rec_id#"}});
structAppend(qryParams, {position = "#application.position#"});
structAppend(qryParams, {user_id = "#client.userid#"});
structAppend(qryParams, {title = {cfsqltype="cf_sql_varchar", value="#arguments.title#", maxlength: 50}});
structAppend(qryParams, {description = {cfsqltype="cf_sql_varchar", value="#arguments.description#", maxlength: 1000}});
Тогда у меня есть две переменные с SQL:
local.insertSQL = "
INSERT INTO notes(rec_id, title, description, user_id, last_update)
VALUES (:rec_id, :title, :description, :user_id, getDate())
";
local.updateSQL = "
UPDATE profile
SET last_update = getDate(),
user_id = :user_id
WHERE rec_id = :rec_id
AND position = :position
";
Тогда в самом конце у меня есть две функции исполнения:
queryExecute(insertSQL, qryParams , {datasource="#application.datasource#", result: "insertResult"});
queryExecute(updateSQL, qryParams , {datasource="#application.datasource#", result: "updateResult"});
Обе функции успешно выполнены, и запись была вставлена / обновлена. Мои вопросы:
- Это хороший подход для хранения всех параметров запроса в одной структуре?
- Есть ли потенциальная проблема или проблема безопасности, делающая это таким образом?
- Есть предложения / комментарии?
Спасибо!