Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ColdFusion表单-显示数据库表中的错误详细信息_Coldfusion - Fatal编程技术网

ColdFusion表单-显示数据库表中的错误详细信息

ColdFusion表单-显示数据库表中的错误详细信息,coldfusion,Coldfusion,我有一个带有错误id和表单验证错误详细信息的数据库表。 在我的ColdFusion表单页面中,我有一个可用的错误号2、4、7的列表。但我想显示错误,如请输入名称等 我想将我的错误列表与数据库表中的错误id进行比较,并在我的表单中显示相应的错误。如果有更好的方法,请告诉我。提前谢谢 我可以如上所示显示错误 现在我想显示实际的消息。我被困在这里 我的问题没有解决。我只能循环浏览错误表。可能我需要循环我的错误ID列表,然后我需要另一个循环来查找要匹配的表errorId,然后显示错误 我用下面的代码把它

我有一个带有错误id和表单验证错误详细信息的数据库表。 在我的ColdFusion表单页面中,我有一个可用的错误号2、4、7的列表。但我想显示错误,如请输入名称等

我想将我的错误列表与数据库表中的错误id进行比较,并在我的表单中显示相应的错误。如果有更好的方法,请告诉我。提前谢谢

我可以如上所示显示错误

现在我想显示实际的消息。我被困在这里

我的问题没有解决。我只能循环浏览错误表。可能我需要循环我的错误ID列表,然后我需要另一个循环来查找要匹配的表errorId,然后显示错误

我用下面的代码把它修好了

<cfloop index="ind" list=#mylist#>
    <cfquery datasource= "#dsn#" name="emperrors">
        Select errorid,errmessage from errorcodes where errorid = #ind#
    </cfquery>
        #emperrors.errmessage#<br>
</cfloop>

您的问题缺少详细信息,但我可能会查询包含错误消息的表,将其转换为结构,然后将该结构放到一个持久范围中,以便稍后引用

比如:

<cfset errorStruct={}>
<cfloop query="qFormErrorMsgs">
  <cfset errorStruct[error_id]=error_msg>
</cfloop>
<cfset application.errorStruct=errorStruct>
然后,当您要显示错误时:

<p>Please fix the following error: #application.errorStruct[variables.error_id]#</p>

但这只是你做这件事的一种方式。如果你的问题中没有更多的信息,你将得到的只是猜测你是否幸运。

好的,你的答案详细代码应该通过编辑添加到你的问题中,但这确实是不够的代码。你如何判断你的错误

听起来你的错误是这样的:

请审查以下内容:

2. 3. 6. 当您需要的是错误消息时

一种简单的更新方法是将所有消息加载到一个数组中,其中索引对应于错误代码

<cfset ErrDetails=ArrayNew()>
<cfset ErrDetails[1]="You didn't enter your first name.">
<cfset ErrDetails[2]="You didn't enter your last name.">
<cfset ErrDetails[3]="You didn't enter a properly formatted birth date.">
<cfset ErrDetails[4]="It appears, from your birthdate, that your age is below 18">
然后,在您的cfloop中,您可以

<cfloop array="#rc.result.getFailureMessages()#" index="message">
  <li>#ErrDetails[message]#</li>
</cfloop>
最后,听起来您的错误代码/消息来自数据库。我不确定这是否必要,但如果你真的想保持这种状态,那没关系。您可以将其初始化到应用程序范围中,以便以后可以调用它,而无需重新运行查询,或者将其放在纯文本中的某个位置。然而,如果您想要得到应用范围的答案,这里有一个方法

<cflock scope="application" timeout="5">
  <cfif not isDefined("application.ErrDetails")>
    <cfquery name="getec">
      select ErrID,ErrMessage from ErrorCodes
    </cfquery>

    <cfset Application.ErrDetails = []>
    <cfloop query="getec">
      <cfset Application.ErrDetails[ErrID]=ErrMessage>
    </cfloop>
  </cfif>
  <cfset request.ErrDetails = Application.ErrDetails>
</cflock>
一旦启动,如上所示显示错误的cfloop可以使用request.errDetails[message]

如果它只在一个页面中运行,我就不用担心创建应用程序变量了。我只是硬编码它,或者在那里使用类似于上面所述的cfloop进行查询,将其写入变量范围变量,而不是应用程序变量,因此不需要cflock


除非您也有基于web的管理员创建这些规则,否则我可能会完全放弃表格,直接将其放入代码、cfinclude、udf或自定义标记中。

,因为询问者已用答案更新了他们的问题

您的答案不必要地重复每次迭代的查询

试试这样的

<cfquery datasource="#dsn#" name="GetECs">
    select ErrorID,ErrMessage from ErrorCodes
     where ErrorID in (<cfqueryparam cfsqltype="cf_sql_integer" list="yes" value="#mylist#">)
</cfquery>

<cfoutput query="GetECs">
  #currentrow#. #ErrMessage#<br>
</cfoutput>
注:

运行一个查询。 对于结果,where ErrorID in与where ErrorID in mylist相同。但是,该标记保护您的查询不受sql注入的影响,即修改变量以在查询中产生不希望的/恶意的结果。阅读cfqueryparam的
到目前为止你做了什么?你能给我们看看你的代码吗?在你告诉我们你目前做某事的方式之前,我们不能告诉你是否有更好的方式来做某事。这其中的哪一部分给你带来了问题?你实际上并没有告诉我们。越简单越好吗?我很高兴你找到了答案。顺便说一句,关于这个问题的更多数据应该编辑到这个问题上,你可以提交你自己的答案作为答案。有时候,唯一的答案就是提问者找到的答案。但是,您的答案不必要地重复每次迭代的查询。
<cfquery datasource="#dsn#" name="GetECs">
    select ErrorID,ErrMessage from ErrorCodes
     where ErrorID in (<cfqueryparam cfsqltype="cf_sql_integer" list="yes" value="#mylist#">)
</cfquery>

<cfoutput query="GetECs">
  #currentrow#. #ErrMessage#<br>
</cfoutput>