2

在我的代码中,我首先创建了查询对象:

<cfset memberData = QueryNew('slug,pos,firstname,lastname,email') />
<cfset temp = QueryAddRow(memberData, #numMembers#) />
<!--- LOOP POPULATES QUERY OBJECT --->
<cfloop...</cfloop>

然后,我可以通过运行以下命令(按预期输出)来验证它是否已被填充:

<cfoutput query="memberData">
#slug# - #pos#<br>
</cfoutput>

然后我尝试查询 memberData 查询对象,一切都变得松散了。如果我运行:

<cfquery name="members" dbtype="query">
    SELECT slug,pos,firstname,lastname
    FROM memberData
    WHERE slug = #slug#
</cfquery>

我收到此错误:

Query Of Queries runtime error.
The select column reference [university] is not a column in any of the tables of the FROM table list.

在上面提到的输出测试中,我可以验证“大学”是 slug 列中的值之一。显然我在我的方法中遗漏了一些东西,但我对它可能是什么感到困惑。任何帮助将不胜感激!

4

2 回答 2

2

好吧,它并没有完全回答所提出的问题,但它已经足够接近我所需要的了:

<cfquery name="members" dbtype="query">
    SELECT *
    FROM memberData
    WHERE slug = '#slug#'
</cfquery>

在发布之前我曾尝试#slug#用单引号括起来但没有成功,但这样做加上更改查询以SELECT *解决问题。对于我的内容,*只增加了一个检索到的值,因此减慢进程并不是真正的问题。

于 2012-09-12T07:49:14.703 回答
2

查询查询运行时错误。
选择列引用 [university] 不是 FROM 表列表的任何表中的列

您的错误由于 where 子句中没有引号引起的,没有别的原因:

此表达式查找 slug 列中的值等于 CF slug 变量(字符串)中的值的行:

      WHERE slug = '#slug#'

另一方面,此表达式意味着查找 slug 列中的值等于CF slug 变量(字符串)中命名的列中包含的值的行:

      WHERE slug = #slug#

您需要更改为的最可能原因SELECT *是 CF 查询缓存。所以现在改回来应该可以解决问题。始终<cfqueryparam .../>按照“Al Everett”的建议使用

于 2012-09-13T15:47:55.753 回答