Forms ColdFusion使用表单中的内部联接选择

Forms ColdFusion使用表单中的内部联接选择,forms,coldfusion,Forms,Coldfusion,我在从ColdFusion表单获取信息到操作页面以及显示所需内容方面遇到了一些问题。我必须根据从表单中选择的产品显示此产品的选定产品和公司名称 以下是我的表单页面中的代码: <form action="productinfo.cfm" method="post"> <cfoutput query = "getProducts"> ... <input type="radio" name="prods" value="#getProducts

我在从ColdFusion表单获取信息到操作页面以及显示所需内容方面遇到了一些问题。我必须根据从表单中选择的产品显示此产品的选定产品和公司名称

以下是我的表单页面中的代码:

<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 query = "JoinProdSupp">
       #JoinProdSupp.ProductName#<br>
       #JoinProdSupp.CompanyName#<br>
     </cfoutput>
供参考

任何时候,只要您想了解任何CF变量、数组、结构、查询的内容,任何嵌套在其中的内容,任何嵌套在其中的内容,您都可以使用CFDUMP

<cfdump var="#MyQuery#">
注意变量名周围的散列,它们很重要

观察如果执行此脚本会发生什么。此脚本使用CF 8或更高版本的语法

<cfscript>
  s_struct = {}; // Create an empty structure.
  s_struct.sample_array = ["sample","array","data"]; // Create an array with three elements
  s_struct.sample_array[4] = {one = 1,banana = "yellow"}; // Add a fourth element to the same array, whose content is a struct with two elements.
  s_struct.second_array = [{cat = "dog", red = "blue", big = "small"},{cat = "feline", dog = "canine", big = "large"}];
  s_struct.FirstArraySize = ArrayLen(s_struct.sample_array);
</cfscript>

<cfdump var="#s_struct#">

cfdump的输出基本上告诉您如何访问变量的内容,这对于文档记录不完整的web服务或无法直接访问的表很有帮助。请记住始终从生产中清理CFDump。

运行查询时,您应该出于各种原因使用查询参数。在输出代码中,因为cfoutput标记中有一个query属性,所以不需要用query名称限定变量。@DanBracuk是对的,他是这样说的。。其中Products.ProductName=。CFQueryParam是抵御sql注入的关键防御措施。还请注意标记周围缺少引号,cfqueryparam会根据所选的cfsqltype添加引号。查询名称确实是不必要的,但如果该cfoutput块增长并变得更复杂,将其放在那里真是太好了,特别是当其他人出现并试图找出变量的来源时。