ColdFusion会话变量在CFQUERY之后被清除



有一个奇怪的问题。用户登录后,我将其定价折扣矩阵作为查询分配给会话变量。然后在产品页面上,我根据产品定价组查找它们的折扣。这段代码一直工作良好,并继续为所有用户工作,但这个特别。这就是这个场景。

Login process根据数据库中的一些数据设置此值<cfset SESSION.Vendor.PriceMatrix = #qryPriceMatrix# />

查询数据看起来像这样。所以是两列

| Discount | VendorCategory |
|----------|----------------|
|0.2       |    SWIPES      |
|0.2       |    TANTUS      |
|0.2       |    TOPCO       |
|0.2       |    VOODOO      |

然后在产品页面上,我简单地像这样查询会话变量

<cfquery name="GetYourPrice" dbtype="query">
SELECT Discount FROM SESSION.Vendor.PriceMatrix
WHERE VendorCategory = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#PricingGroup#" maxlength="20">
</cfquery>

我遇到的问题是,在会话变量的查询之后,它将会话变量中折扣列的所有值设置为0,如下所示。

| Discount | VendorCategory |
|----------|----------------|
|0         |    SWIPES      |
|0         |    TANTUS      |
|0         |    TOPCO       |
|0         |    VOODOO      |

我不知道为什么或如何发生这种情况,因为我认为为了发生这种情况,我必须设置会话变量,但没有cfset语句。这段代码同样适用于所有其他用户帐户。有人遇到过类似的情况吗?一个会话变量的查询包含一个查询,然后设置第一列为零?

此代码在所有其他用户帐户上运行良好

你百分之百确定吗?很有可能这只是第一次报道这种情况。感觉像是内存泄漏的问题。如果你处理在applicaitonsession作用域中缓存的CFCs,是否所有的函数变量localvar都作用于它们的函数?

如果有任何代码为查询中的每个VendorDiscount设置默认值0,请将0更改为-1,并查看这是否是被错误调用的代码。

用户登录系统而不购买任何东西的频率是多少?如果不是经常增加会话内存,那么你的投资回报率就会很低。就我个人而言,我不会隐藏这个折扣列表。我只会查询数据库,并让它在主查询中返回全价、折扣金额和调整后的价格。

相关内容

  • 没有找到相关文章

最新更新