ColdFusion 查询执行参数对象?
ColdFusion queryExecute parameters object?
我最近开始在我的项目中使用 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"});
两个函数都执行成功,记录为 inserted/updated。我的问题是:
- 这是将所有查询参数存储在一个结构中的好方法吗?
- 这样做有任何潜在的问题或安全问题吗?
- 任何 suggestions/comments?
谢谢!
这是一个开放式问题,但这里是
Q1:这是将所有查询参数存储在一个结构中的好方法吗?
A1: 是的,但如果您愿意,可以考虑使用实体。
问题 2:这样做是否存在任何潜在问题或安全问题?
A2: None 我知道的
Q3:任何suggestions/comments?
A3:
如果您的数据源在 application.cfc
中,则无需明确说明。
你得到的结果很艰难。考虑 myResult=QueryExecute(...)
您可以一次构建结构。您不需要所有这些 structAppend()
。 structNew()
打字太多了。考虑 {}
.
user_id = "#client.userid#"
打字太多了...只需 user_id = client.userid
就足够了。
您更改了建筑结构的样式 {cfsqltype="cf_sql_varchar", value="#arguments.title#", maxlength: 50}
。恕我直言,使用 :
而不是 =
希望对您有所帮助
我最近开始在我的项目中使用 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"});
两个函数都执行成功,记录为 inserted/updated。我的问题是:
- 这是将所有查询参数存储在一个结构中的好方法吗?
- 这样做有任何潜在的问题或安全问题吗?
- 任何 suggestions/comments?
谢谢!
这是一个开放式问题,但这里是
Q1:这是将所有查询参数存储在一个结构中的好方法吗?
A1: 是的,但如果您愿意,可以考虑使用实体。
问题 2:这样做是否存在任何潜在问题或安全问题?
A2: None 我知道的
Q3:任何suggestions/comments?
A3:
如果您的数据源在
application.cfc
中,则无需明确说明。你得到的结果很艰难。考虑
myResult=QueryExecute(...)
您可以一次构建结构。您不需要所有这些
structAppend()
。structNew()
打字太多了。考虑{}
.user_id = "#client.userid#"
打字太多了...只需user_id = client.userid
就足够了。您更改了建筑结构的样式
{cfsqltype="cf_sql_varchar", value="#arguments.title#", maxlength: 50}
。恕我直言,使用:
而不是=
希望对您有所帮助