我正在尝试通过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的辩论。
答案 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>