使用锚标记 运行 并显示查询
Using an anchor tag to run and display a query
我有一个查询 returns 我需要的数据,但我希望它能够通过单击页面顶部的 link 来调用。我在顶部有三个 link,前两个在单击时显示活动和非活动订单,我希望第三个仅显示当前登录用户的订单 created/reviewed。
一切似乎都独立工作(查询 returns 我从数据库中寻找什么,link 显示我想要它的位置和方式)但是 link 只是刷新当前点击时的页面。
我确定这里缺少一些简单的东西,因为我是 ColdFusion 的新手。这是我的代码 spinets,带有一个淡化的查询(因为我认为这不重要。)
查询:
<cfif structKeyExists(url,"myOrders")>
<cfquery>
SELECT *
FROM table
WHERE processorID = #session.user.id#
</cfquery>
</cfif>
锚标签:
<li class="active">
<a href="websiteName.cfm?m=#url.m#&ai=1&myOrders=True">My Orders</a>
</li>
首先,您应该设置 <cfparam>
来定义预期的变量、它们的数据类型和默认值。
<cfparm name="url.myOrders" type="boolean" default="true">
<cfparm name="url.active" type="boolean" default="true">
接下来,您的链接需要反映这些变量的组合。我删除了一些查询字符串参数以专注于这两个。请注意,最后两个链接不包含 myOrders
,第一个 <cfparam>
处理该查询字符串参数的默认定义。
<ul>
<a href="websiteName.cfm?myOrders=true&active=true">My Active Orders</a>
<a href="websiteName.cfm?myOrders=true&active=false">My Inactive Orders</a>
<a href="websiteName.cfm?active=true">All Active Orders</a>
<a href="websiteName.cfm?active=false">All Inactive Orders</a>
</ul>
最后,您可以根据这两个变量动态生成您的SQL。
<cfquery>
SELECT *
FROM table
WHERE
orderStatus = <cfqueryparam value="#url.active#" cfsqltype="cf_sql_bit">
<cfif url.myOrders>
AND processorID = <cfqueryparam value="#session.user.id#" cfsqltype="cf_sql_integer">
</cfif>
</cfquery>
<cfqueryparam>
标签用于防止 SQL 注入攻击。您可以根据需要添加更多变量来更改您需要的 SQL。
我发现了问题。我是这个项目的新手,现有代码在我加入时已经存在。我的查询有效(这让我很兴奋),但问题出在文件的不同部分,有一个部分实际显示了命名查询的结果。
他们设置了它,所以针对这个特定页面的每个查询都有相同的名称,有点像:
<cfquery name=qDisplayQuery>
找到这个后,我就为查询输入了相同的名称。现在,当单击 link 时,它会覆盖所有其他查询。每个 link 的作用相同,因此只有与正确的 link 关联的查询才会在单击时显示。感谢@James A Mohler,
我添加了 <cfqueryparam>
和一些参数。
感谢所有伸出援手的人,你们都是英雄
我有一个查询 returns 我需要的数据,但我希望它能够通过单击页面顶部的 link 来调用。我在顶部有三个 link,前两个在单击时显示活动和非活动订单,我希望第三个仅显示当前登录用户的订单 created/reviewed。
一切似乎都独立工作(查询 returns 我从数据库中寻找什么,link 显示我想要它的位置和方式)但是 link 只是刷新当前点击时的页面。
我确定这里缺少一些简单的东西,因为我是 ColdFusion 的新手。这是我的代码 spinets,带有一个淡化的查询(因为我认为这不重要。)
查询:
<cfif structKeyExists(url,"myOrders")>
<cfquery>
SELECT *
FROM table
WHERE processorID = #session.user.id#
</cfquery>
</cfif>
锚标签:
<li class="active">
<a href="websiteName.cfm?m=#url.m#&ai=1&myOrders=True">My Orders</a>
</li>
首先,您应该设置 <cfparam>
来定义预期的变量、它们的数据类型和默认值。
<cfparm name="url.myOrders" type="boolean" default="true">
<cfparm name="url.active" type="boolean" default="true">
接下来,您的链接需要反映这些变量的组合。我删除了一些查询字符串参数以专注于这两个。请注意,最后两个链接不包含 myOrders
,第一个 <cfparam>
处理该查询字符串参数的默认定义。
<ul>
<a href="websiteName.cfm?myOrders=true&active=true">My Active Orders</a>
<a href="websiteName.cfm?myOrders=true&active=false">My Inactive Orders</a>
<a href="websiteName.cfm?active=true">All Active Orders</a>
<a href="websiteName.cfm?active=false">All Inactive Orders</a>
</ul>
最后,您可以根据这两个变量动态生成您的SQL。
<cfquery>
SELECT *
FROM table
WHERE
orderStatus = <cfqueryparam value="#url.active#" cfsqltype="cf_sql_bit">
<cfif url.myOrders>
AND processorID = <cfqueryparam value="#session.user.id#" cfsqltype="cf_sql_integer">
</cfif>
</cfquery>
<cfqueryparam>
标签用于防止 SQL 注入攻击。您可以根据需要添加更多变量来更改您需要的 SQL。
我发现了问题。我是这个项目的新手,现有代码在我加入时已经存在。我的查询有效(这让我很兴奋),但问题出在文件的不同部分,有一个部分实际显示了命名查询的结果。
他们设置了它,所以针对这个特定页面的每个查询都有相同的名称,有点像:
<cfquery name=qDisplayQuery>
找到这个后,我就为查询输入了相同的名称。现在,当单击 link 时,它会覆盖所有其他查询。每个 link 的作用相同,因此只有与正确的 link 关联的查询才会在单击时显示。感谢@James A Mohler,
我添加了 <cfqueryparam>
和一些参数。
感谢所有伸出援手的人,你们都是英雄