ColdFusion queryExecute 参数对象?

标签 coldfusion cfml coldfusion-11 cfquery cfqueryparam

我最近开始在我的项目中使用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"});

两个函数均成功执行并且记录已插入/更新。我的问题是:

  • 这是将所有查询参数存储在一个结构中的好方法吗?
  • 这样做是否存在任何潜在问题或安全问题?
  • 有什么建议/意见吗?

谢谢!

最佳答案

这是一个开放式问题,但这里是

问题1:这是将所有查询参数存储在一个结构中的好方法吗?
A1:是的,但如果您喜欢的话,您可能需要考虑使用实体。

问题2:这样做是否存在任何潜在的问题或安全问题?
A2:据我所知没有

Q3:有什么建议/意见吗?
A3:

  1. 如果您的数据源位于 application.cfc 中,则无需明确声明。

  2. 你要通过艰难的方式才能得到结果。考虑myResult=QueryExecute(...)

  3. 您可以一次性构建结构。您不需要所有这些 structAppend()。 structNew() 打字太多了。考虑{}

  4. user_id = "#client.userid#" 打字太多了...只需 user_id = client.userid 就足够了。

  5. 您更改了构建结构的样式{cfsqltype="cf_sql_varchar", value="#arguments.title#", maxlength: 50}。恕我直言,使用 : 而不是 =

希望这对您有帮助

关于ColdFusion queryExecute 参数对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56756814/

相关文章:

iis-7 - Coldfusion 9 和 IIS7 URL 重写

javascript - jQuery 和 Ajax 仅对第一个元素使用react!

orm - 如何在 ColdFusion 中对内存中的 ORM 对象数组进行排序和过滤?

php - Web 开发中的源代码控制系统

coldfusion - 基于脚本的组件中的线程不起作用

coldfusion - 将 Firebird RDBMS 与 ColdFusion 11 结合使用时出现查询错误

coldfusion - 如何使用 queryExecute 设置调试输出查询名称

regex - 网站路径导致使用网站名称时出现问题

coldfusion - 使用静态变量

jquery - <cflocation> 重定向导致 HTTP 错误 414 - 请求 URL 太长