Coldfusion 设置CFIF的问题

Coldfusion 设置CFIF的问题,coldfusion,if-statement,Coldfusion,If Statement,我一直在尝试这样做,如果没有与lastname和firstname相关联的照片,则不会显示它们。我试着做一个cfif检查文件名是否已定义,但它似乎不起作用。它返回一个错误,说明: 已定义函数的参数1(现在是映像的文件路径)必须是语法上有效的变量名 有什么建议吗 感谢isDefined将变量名称作为字符串,而不是变量本身。改变 <cfoutput query="allOutcomes" maxrows="10"> <div class="galleryOutcome">

我一直在尝试这样做,如果没有与lastname和firstname相关联的照片,则不会显示它们。我试着做一个cfif检查文件名是否已定义,但它似乎不起作用。它返回一个错误,说明:

已定义函数的参数1(现在是映像的文件路径)必须是语法上有效的变量名

有什么建议吗

感谢

isDefined将变量名称作为字符串,而不是变量本身。改变

<cfoutput query="allOutcomes" maxrows="10">
  <div class="galleryOutcome">
    <cfset thisPhoto = uploads.listPhotobyOutcomeID(#outcomeID#)>
    <h3>#lastname#, #firstname#</h3>
    <cfloop query="thisPhoto" >
      <cfif isdefined(filename)>

        <div class="gallerythumb">
          <a href="javascript: thumbExpand('#fileName#')"><img src="documents/uploads/PHOTOS/#filename#" alt="#filename#" border="0"  width="200"/></a>
        </div>

      <cfelse>
        <p> NO PHOTOS </p>
      </cfif>
    </cfloop>

  </div><div class="clear"></div><br /><br />
  <div onClick="javascript: thumbHide()" id="thumbexpand" style="display:none; left:670px;; height:0px; position:fixed; top:100px;">                    
  </div>

</cfoutput>

使用

我猜filename是其中一列?在查询对象中,null用空字符串表示,因此len可以工作。

首先,IsDefined需要变量的名称。当您省略引号或使用符号时,您是在传递变量值。正确的语法是:

<cfif isdefined("filename")>
编辑:正如评论中提到的Busches,通常优先于IsDefined,因为它的结果更精确。有些人可能会说它也有更好的表现。但在大多数情况下,任何差异都可以忽略不计。提高准确性是IMO更令人信服的原因

   <cfif FileExists( ExpandPath("/path/to/images/"& thisPhoto.fileName) )>
        it exists. do something ...
   <cfelse>
        no photo
   </cfif>

是的,但如果它是一个查询列,它将始终存在。你真是帮了大忙。回答得好!谢谢但是我注意到了嵌套查询。因此,如果可以有多张照片,他可能还需要另外一两步。请查看查询范围!帮你未来的自己一个忙。此外,开始交易是为StructKeyExists定义的。匿名向下投票人,不要连续向下投票。这是标记自己的好方法。可以有多张照片吗?是否有可能重新编写代码以消除嵌套查询?
   <cfif IsDefined("variableName")>
   <cfif FileExists( ExpandPath("/path/to/images/"& thisPhoto.fileName) )>
        it exists. do something ...
   <cfelse>
        no photo
   </cfif>
<cfif structKeyExists( scopeOrStruct, "variableName")>