Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Why does CFIF test give opposite results?

Contributor ,
Aug 06, 2021 Aug 06, 2021

I ran into an issue where a condition (CFIF) that should be true is returning false. I'm hoping someone has a nifty answer to this.

 

Here's some code I created to demonstrate the test:

<cfif url.userid is "session.userid"> <!--- Condition True --->
    My test is &lt;cfif url.userid is "session.userid"&gt;<br><br> 
    url.userid IS equal to session.userid<br><br>  
    The values are:<br>
    url.userid = <cfoutput>#url.userid#</cfoutput><br>
    session.userid = <cfoutput>#session.userid#</cfoutput><br><br>
<cfelse> <!--- Condition False --->
    My test is &lt;cfif url.userid is "session.userid"&gt;<br><br> 
    url.userid is NOT equal to session.userid<br><br>
    The values are:<br>
    url.userid = <cfoutput>#url.userid#</cfoutput><br>
    session.userid = <cfoutput>#session.userid#</cfoutput><br><br>
</cfif>

And here's how my "Condition False" code displays:

John_Allred_0-1628267562010.png

I'm stumped.

 

Thanks!
John Allred

287
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Contributor , Aug 06, 2021 Aug 06, 2021

This is where you see my sheepish expression as I solve my own problem. For what it's worth, I'd love one of the gurus to explain "WHY", but here's the solution:

 

I was using "IS" between the two variables. When I changed IS to EQ and removed the quotes, all is well. 

 

So, this works as expected. With the variables holding the same value:

 

 

<cfif url.userid eq session.userid>

 

Could it be that I was comparing a numeric value with a text value?

 

Translate
Contributor ,
Aug 06, 2021 Aug 06, 2021

This is where you see my sheepish expression as I solve my own problem. For what it's worth, I'd love one of the gurus to explain "WHY", but here's the solution:

 

I was using "IS" between the two variables. When I changed IS to EQ and removed the quotes, all is well. 

 

So, this works as expected. With the variables holding the same value:

 

 

<cfif url.userid eq session.userid>

 

Could it be that I was comparing a numeric value with a text value?

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Aug 06, 2021 Aug 06, 2021

Your original post shows that you're incorrectly comparing url.userid to the literal string "session.userid" rather than the value of session.userid, which you are correctly doing in your second post.

Remove the quotes from the example in your first post and it will behave the way you expect.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 07, 2021 Aug 07, 2021
LATEST

I agree with @EddieLotter . Another variation, likely the one you intended,  is:

<cfif url.userid is "#session.userid#"> <!--- Condition True --->

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Resources