CF QoQ正在抛出运行时错误。 “列引用不是FROM表列表的任何表中的列。”

时间:2012-09-12 07:15:52

标签: coldfusion coldfusion-8 cfquery

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

<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列中的值之一。很明显,我的方法中缺少一些东西,但我对它可能是什么感到困惑。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

  

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

您的错误 是由于where子句中没有引号而没有其他内容

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

      WHERE slug = '#slug#'

另一方面,这个表达式意味着找到其中slug列中的值等于CF slug变量(String)中命名的列中包含的值的行:

      WHERE slug = #slug#

您需要更改为SELECT *的最可能原因是CF查询缓存。现在改回来应该可以解决问题。 总是按照“Al Everett”

的建议使用<cfqueryparam .../>

答案 1 :(得分:1)

嗯,它并没有完全回答问题,但它足够接近我的需要:

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

我在发布之前尝试用单引号括起#slug#但没有成功,但这样做将查询更改为SELECT *修复了问题。对于我的内容,*仅添加了一个检索到的值,因此在减慢过程中并不是一个真正的问题。