【问题标题】:Parameter in the url?网址中的参数?
【发布时间】:2015-07-13 14:32:52
【问题描述】:

我有一个包含两个不同链接的页面:Active 和 InActive 员工(如下所示)。点击第一个链接查看活跃员工,点击第二个链接查看非活跃员工。

我想为这些链接的 URL 添加一个参数。我想用活跃员工的链接发送“活跃”,用非活跃员工的链接发送“不活跃”。之后,如果 URL 参数处于活动状态,我只想查询那些处于活动状态的人,或者如果它不活动,则只查询不活动的员工。这里我为我的员工创建了两个页面:

<li><a href="ActiveEmployee.cfm">Active Employee</a></li>

<li><a href="InActiveEmployee.cfm">InActive Employee</a></li>

这是我的查询:

Select FirstName, LastName, Age, Active
From Employees
Where Active Like '%Active%'

我不确定这是否可以通过这种方式完成。我仍然没有让我的代码正常工作。提前致谢。

【问题讨论】:

  • 您不需要两个单独的页面。只需使用一个页面,并让页面使用 url 参数来决定显示什么。如果要使用两个页面,url参数是多余的,没有意义。
  • 另外:显示围绕查询的冷融合标记,为我们提供如何集成参数的上下文。

标签: html sql coldfusion


【解决方案1】:

正如乔尔指出的那样,您应该有一页。您的链接看起来像

<a href="Employee.cfm?isActive=1">Active Employee</a>
<a href="Employee.cfm?isActive=0">InActive Employee</a>

在 Employee.cfm 的顶部,您可能希望默认此参数

<cfparam name="url.isActive" type="numeric" default="1">

您还应该在查询中使用 cfqueryparam

<cfquery name="myQuery" datasource="#myDSN#">
    SELECT FirstName, LastName, Age, Active
    FROM Employees
    WHERE Active = <cfqueryparam cfsqltype="cf_sql_integer" value="#url.isActive#">
</cfquery>

【讨论】:

    【解决方案2】:

    首先,您可以在同一页面上执行此操作。

    您希望 URL 类似于 Employees.cfm?status=Activestatus=Inactive

    然后查询:

    <cfif isDefined("URL.status")>
    <cfquery name="poo" datasource="whatever">
    SELECT Employee
    FROM EmployeeTable
    WHERE Active LIKE '#URL.status#'
    </cfquery>
    </cfif>
    

    当您从 URL 或表单中获取变量时,您可能还想使用 cfqueryparam。它有助于防止 SQL 注入。

    如果您不想更改执行方式(尽管您可以并且应该),您可以转储 CGI 范围以获取查询字符串或模板路径,然后编写一个条件查询。 (如果模板路径包含inactiveemployee.cfm,则执行此查询)。

    【讨论】:

    • 你永远不应该相信用户的输入表单。查询应该是参数化的,否则,它是开放的 SQL 注入。
    • 如果您阅读了答案,您会发现我说了这么多。
    • 为什么不像 Boszlo 那样在代码中使用cfqueryparam?奇怪的是 OP 会简单地复制/粘贴你的代码..如果它有效,那就愉快地走他们的路,不要更聪明。
    • 对我来说,更好的方法是将cfqueryparam 放入代码中,然后说您可能需要调整SQL 类型。您的评论看起来好像不使用cfqueryparam 是可以的,但实际上并非如此。我认为 StackOverflow 是为了帮助人们成为更好的开发人员。
    • 您的代码已经假设了一种数据类型,因此在您的答案中添加cfqueryparam 不会做出任何额外的假设。
    猜你喜欢
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 2019-06-04
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 2014-02-23
    相关资源
    最近更新 更多