代码之家  ›  专栏  ›  技术社区  ›  artlung

在ColdFusion中转换为整数;清除变量

  •  4
  • artlung  · 技术社区  · 14 年前

    <?php
      $id = (isset($_GET['id'])) ? (int)$_GET['id'] : 0;
    ?>
    

    基本上,检查url参数 id 如果它存在,请确保它是一个整数,这样我就可以在数据库查询中安全地使用它。如果结果是零,那也没关系。

    <cfscript>
    if (IsDefined("URL.id") AND IsNumeric(URL.id)) {
        id = int(URL.id);
    } else {
        id = 0;
    }
    </cfscript>
    

    6 回复  |  直到 14 年前
        1
  •  1
  •   Anthony    14 年前

    我会使用cfparam。我也会明确界定范围,但这不是必须的。我不会使用IIF()函数,因为它使用evaluate(),这可能会有问题,出于同样的原因,我也会避免使用DE()。在这种情况下,这不会是一个问题,但我在一般原则上避免他们在任何情况下,这不是绝对必要的。我已经使用CF有几年了,现在还没有必要。

    <cfparam name="url.id" default="0" />
    
    <cfif isNumeric(url.id)>
        <cfset local.id = int(url.id) />
    <cfelse>
        <cfset local.id = 0 />
    </cfif>
    
        2
  •  10
  •   Rick O    14 年前

    <cfset id = (structKeyExists(URL, "id") and isNumeric(URL.id)) ? int(URL.id) : 0>
    
        3
  •  1
  •   ale    14 年前

    对我来说,确保变量是整数的最简单方法是将变量包装在val()中。

    • 如果TestValue=“234A56?7’’,Val(TestValue)返回234。
    • 如果TestValue=“BG234”,则Val(TestValue)返回值0(不是错误)。

    看到了吗 http://cfquickdocs.com/cf8/#Val

        4
  •  1
  •   Community Ian Goodfellow    4 年前

    NumberFormat(URL.id)
    

    您还可以在不同的场景中指定各种掩码

    ColdFusion参考

    如果参数值为“”(空字符串),则返回0。

    http://help.adobe.com/livedocs/coldfusion/8/htmldocs/help.html?content=functions_m-r_08.html

        5
  •  0
  •   Ken Redler    14 年前

    cfparam .

    <cftry>
      <cfparam name="url.id" default="0" type="integer">
    <cfcatch>
      <!--- log? etc --->
      <cfset url.id = 0>
    </cfcatch>
    </cftry>
    
        6
  •  -4
  •   PPShein    14 年前

    你可以用 IIF

    <cfset id = IIf(IsDefined("URL.id") AND Int(URL.id), Int(URL.id), DE("0"))>