我在从ColdFusion表单获取信息到操作页面并显示所需内容方面遇到了一些麻烦。基于从表单中选择的产品,我必须显示此产品的选定产品和公司名称。ColdFusion SELECT通过表单中的INNER JOIN
这里是我的表单页面的代码:
<form action="productinfo.cfm" method="post">
<cfoutput query = "getProducts">
...
<input type="radio" name="prods" value="#getProducts.productname#">
#getProducts.productname#
...
</cfoutput>
<input type="submit" value="Submit">
</form>
这里是我的行动网页代码:
<cfset prodname = form.prods>
<cfquery name = "JoinProdSupp" datasource = "jeb48_northwind">
SELECT Products.ProductName, Suppliers.CompanyName
FROM Suppliers INNER JOIN Products
ON Suppliers.SupplierID = Products.SupplierID
WHERE (((Products.ProductName)='#prodname#'));
</cfquery>
我不完全知道如何输出查询的内容。
当您运行查询时,出于各种原因,您应该使用查询参数。在你的输出代码中,由于你的cfoutput标签中有一个查询属性,因此不需要使用查询名称来限定变量。 – 2014-10-04 09:19:10
@DanBracuk是正确的,并要清楚,他的意思这样.. WHERE(((Products.ProductName)= ))。 CFQueryParam是针对sql注入的关键防御。 http://help.adobe.com/livedocs/coldfusion/8/htmldocs/help.html?content=Tags_p-q_18.html。还要注意标记周围缺少引号,cfqueryparam根据所选的cfsqltype指定添加引号。 –
2014-10-04 16:09:03
查询名称确实是不必要的,但如果该cfoutput块增长并且变得更加复杂,那么将它放在那里真的很不错,尤其是当其他人出现并试图找出变量来自何处时。 – Barry 2014-10-08 16:26:04