SQL查询能否提供ColdFusion可以使用的值?
我目前正在建立一个成员调查,每个成员都会获得一个唯一的链接,用于访问调查。一旦他们访问并提交调查,他们就不能再使用该链接。以下是我到目前为止的情况:SQL查询能否提供ColdFusion可以使用的值?,sql,coldfusion,Sql,Coldfusion,我目前正在建立一个成员调查,每个成员都会获得一个唯一的链接,用于访问调查。一旦他们访问并提交调查,他们就不能再使用该链接。以下是我到目前为止的情况: <cfquery name="SurveyTaken" maxrows="1" datasource="#APPLICATION.DATASOURCE#"> IF EXISTS (SELECT 1 FROM AllMembers WHERE me_number = <cfqueryparam value="#URL
<cfquery name="SurveyTaken" maxrows="1" datasource="#APPLICATION.DATASOURCE#">
IF EXISTS (SELECT 1 FROM AllMembers WHERE me_number = <cfqueryparam value="#URL.em#" cfsqltype="cf_sql_char">)
SELECT * FROM MemberSurvey
WHERE me_number = <cfqueryparam value="#URL.em#" cfsqltype="cf_sql_char">
</cfquery>
<cfif SurveyTaken.recordcount eq 1>
<p>We are sorry but it seems that you have already taken the survey. This link has been used and is no longer valid.</p>
<cfelseif SurveyTaken.recordcount eq 0>
<cfquery name="SurveyIndividual" maxrows="1" datasource="#APPLICATION.DATASOURCE#">
SELECT *
FROM AllMembers
WHERE me_number = <cfqueryparam value="#URL.em#" cfsqltype="cf_sql_char">
</cfquery>
<cfform action="" method="post" id="addCommentForm" onsubmit="return submit_form()">
.... etc...
</cfif>
基本上,我希望我的SQL查询首先检查成员ID是否有效,然后在另一个表中检查成员ID是否已提交。现在,如果在URL中发布了有效的成员id,则它可以工作,因为它传递了if部分,但如果未传递if部分,则不会运行任何查询,因此my.recordcount解决方案不起作用。我能做些什么来解决这个问题吗?我想在调查完成后,您正在录制一些东西,以使id无效?类似于set idValid=0 你可能想做一些更像
SELECT *
FROM
MemberSurvey
WHERE me_number = <cfqueryparam value="#URL.em#" cfsqltype="cf_sql_char">
and idValid is NULL
由于这将返回0条记录,其中包含完成调查的假ID或好ID,因此您需要在cfif中反转.recordCount值
或者,如果只是从表中删除ID,只需使用
SELECT *
FROM
MemberSurvey
WHERE me_number = <cfqueryparam value="#URL.em#" cfsqltype="cf_sql_char">
您仍然需要反转cfif中的.recordCounts。我在这里做一些假设,因为我不知道您的确切模式 假设membersurvey表中名为membersurvey\u id的主键或至少唯一键 recordcount>0表示url.em是有效的。如果recordcount>0,则membersurvey\u id>0表示调查已经填写
注意,我使用了MSSQL的ISNULL函数。您没有确切指定正在使用的数据库类型,因此您可能需要使用该函数的特定于软件包的版本。这不起作用,因为me_编号存储在不同的表中。此时调查表为空,仅在填写调查后才填充。那么phantom42答案的前提更合适。如何在cfif语句中引用membersurvey_ID?与任何其他查询列相同。调查发现。如果返回多行并且没有在指定查询的循环中,请执行某些操作或可能包括行号。请确保首先检查query.recordCount以验证行号是否存在。
SELECT m.me_number, ISNULL(s.membersurvey_id,0) AS membersurvey_id
FROM allmembers m
LEFT OUTER JOIN membersurvey s ON m.me_number = s.me_number
WHERE m.me_number = <cfqueryparam value="#url.em" cfsqltype="cf_sql_char">