Coldfusion通过url传递变量

时间:2013-04-10 15:30:34

标签: sql coldfusion

我正在尝试通过URL传递用户名的ID(此部分有效)。然后转到显示用户信息的下一页。但是我不能让后者正常工作。以下是我的代码

工作网址代码:

<a href="memberdetails.cfm?id='#custlist.customerID#'">#custlist.userName#<br />

非工作部分:

<cfquery name="custlist" datasource="homesource">
       id = $_GET['customerID'] ;
   SELECT * FROM customers WHERE customerID = id
</cfquery>

欢迎任何有关此问题的帮助。我刚开始学习ColdFusion(就像今天一样)。这个应用程序只适合我玩,测试水域。所以如果可能的话,没有关于我通过网址传递id的辩论。

4 个答案:

答案 0 :(得分:7)

要引用URL变量,只需引用前缀为url的变量即可。您正在将customerID传递给id参数,因此您将指定url.id。在字符串中,您需要用井号标记它:"#url.id#"

以下是更改查询以使用示例中的URL变量的方法:

<cfquery name="custlist" datasource="homesource">
    SELECT * 
    FROM customers 
    WHERE customerID = <cfqueryparam value="#url.id#" cfsqltype="cf_sql_integer">
</cfquery>

为了更加安全,请务必使用cfqueryparam将变量绑定到SQL。

答案 1 :(得分:1)

其他答案告诉你如何解决手头的问题。这是额外的事情。你有这个:

<cfquery name="custlist" datasource="homesource">
id = $_GET['customerID'] ;
SELECT * FROM customers WHERE customerID = id
</cfquery>

错误是在ColdFusion应用程序中使用php代码。当然这很愚蠢,但你可以做到这一点:

<cfquery name="custlist" datasource="homesource">
<cfset id = url.customerID>
SELECT * FROM customers WHERE customerID = id
</cfquery>

关键是你可以在cfquery块中放入其他coldfusion标签。这是一个更实际的例子。

<cfquery name="custlist" datasource="homesource">
SELECT * 
FROM customers 
<cfif StructKeyExists(url,"customerid")>
WHERE customerID = <cfqueryparam cfsqltype="cf_sql_integer" value="#url.customer_id#">
</cfif>
</cfquery>

答案 2 :(得分:0)

<cfquery name="custlist" datasource="homesource">
   SELECT * FROM customers WHERE customerID = <cfqueryparam cfsqltype="cf_sql_integer"   value="#url.customer_id#">
</cfquery>

切勿直接在查询中使用客户端数据(在本例中为URL)。整数参数将阻止所有SQL注入黑客尝试。由于数据库通信的方式(sql准备语句),它还提高了性能。

答案 3 :(得分:-1)

我建议购买一本关于coldfusion的书,因为这是他们教给你的最基本的东西。

<cfquery name="custlist" datasource="homesource">
   SELECT * FROM customers WHERE customerID = <Cfqueryparam  cfsqltype="cf_sql_integer" value="#url.id#">
</cfquery>