【发布时间】:2018-10-30 15:18:08
【问题描述】:
在数据库中,我有 5 列加上 id:
id, m1, m2, m3, m4, m5
我根据 id 从一个可能有 1 到 5 行的表中进行选择:
row,id,value
1, 1, 'A'
2, 1, 'B'
3, 1, 'C'
等 我需要做的是用值 A、B 和 C 更新用户表中的用户表中的 m1、m2 和 m3 列,其值为 A、B 和 C。我已经开始了这样的道路,但在星期二遇到了严重的星期一大脑。
i=1;
cfloop (query=q) {
field = 'm' & i;
temp = invoke(myCFC,"updateUser",{ userid=q.id, field = q.value });
i++;
};
其中“字段”是 m1、m2、m3。一种方法是在记录数上使用 switch/case 并进行 5 次不同的调用,但不确定是否有更好的编程方式?
[edit] 这可行,但可能不是最好的方法 - 我有 1-5 的案例:
switch(qryM.recordCount) {
case "1":
temp = invoke(userCFC,"updateUser", {
id = qryM.rsm_userid,
m1_c = qryM["rsm_c"][1],
m1_m = qryM["rsm_m"][1]
});
break;
case "2":
temp = invoke(userCFC,"updateUser", {
id = qryM.rsm_userid,
m1_c = qryM["rsm_c"][1],
m1_m = qryM["rsm_m"][1],
m2_c = qryM["rsm_c"][2],
m2_m = qryM["rsm_m"][2]
});
break;
【问题讨论】:
-
cfloop是什么?这种语法对我来说很陌生。会不会是CFScript中的for循环,如果不是CFScript,那就是<cfloop>标签? -
我正在使用 for / in 循环,但看到一篇博客文章 cfloop(query=, group=) 等有效。在今天之前我从未见过它。运行 CF2016 更新 7.
-
你说得对,这行得通。我完全错过了,我将不得不做一些阅读。
-
cfloop() 将在 cfscript 中工作。几乎所有标签在 cfscript 中都可以这样工作。它对于制作纯 cfscript 的东西很有用,但它可能会导致奇怪。在这种情况下,我会选择 for-in 解决方案。
-
您是更新所有 5 列,还是只更新其中之一?如果您遍历您的 query2 以对每一行进行 query1.column 更新,那么您将在数据库上受到打击。您可以使用 PIVOT 做您想做的事。你有样本数据吗?还有一些期望?
标签: coldfusion cfloop