0

我正在使用 ColdFusion 并尝试从 MS SQL 数据库中获取数据。问题是应该只有一行有细节。同时,如果我尝试以用户或管理员身份登录,它工作正常。语法与管理员登录基本相同。也许我错过了什么?这是代码:

<html>
<head>


<cfquery name='Query' datasource='MyDSN'>
<cfset "id" = #Form.user#/>
SELECT UserID, FName, SName, Phone, Address FROM users WHERE UserID = <cfqueryparam   value="#FORM.user#" cfsqltype="cf_sql_varchar">
</cfquery>


</head>
<body>

 <cfif #Query.recordCount# EQ 1>


<TABLE height="30px" CELLPADDING="5" CELLSPACING="3">
<TR BGCOLOR="888888" >
<TH>User ID         </TH> 
<TH>Name    </TH>
<TH>Surname </TH> 
<TH>Phone   </TH>
<TH>Address </TH> 
</TR>
<TD><cfoutput> #Query.UserID# </cfoutput></TD>
<TD><cfoutput> # Query.FName# </cfoutput></TD>
<TD><cfoutput> # Query.SName# </cfoutput></TD>
<TD><cfoutput> # Query.Phone# </cfoutput></TD>
<TD><cfoutput> # Query.Address# </cfoutput></TD></TR>

<cfelse>
<cfoutput> No such user...</cfoutput>
</cfif>
</body>
</html>
4

2 回答 2

3

您的原始查询和错误消息不是来自相同的代码。您的错误消息显示您在 FROM 语句中列出了列名。这是正确的语法。

<cfquery name='Query' datasource='MyDSN'>
SELECT UserID, FName, SName, Phone, Address 
FROM users
WHERE UserID = <cfqueryparam value="#trim(FORM.user)#" cfsqltype="cf_sql_varchar">
</cfquery

来自 Leigh 的聊天 - 确保在使用cfqueryparam.

此外,在您的 cfif 语句中,#不需要。

<cfif Query.recordCount EQ 1>

解决您的输出无法正常工作的问题

<cfif Query.recordCount EQ 1>
  <cfoutput>
    <TABLE height="30px" CELLPADDING="5" CELLSPACING="3">
    <TR BGCOLOR="888888" >
      <TH>User ID</TH> 
      <TH>Name</TH>
      <TH>Surname</TH> 
      <TH>Phone</TH>
      <TH>Address</TH> 
    </TR>
    <TR>
      <TD>#Query.UserID#</TD>
      <TD>#Query.FName#</TD>
      <TD>#Query.SName#</TD>
      <TD>#Query.Phone#</TD>
      <TD>#Query.Address#</TD>
    </TR>
  </cfoutput>
<cfelse>
    <cfoutput> #Form.user#</cfoutput>
</cfif>
于 2013-05-14T12:54:04.713 回答
0

你没有具体说明你的问题。我假设查询没有返回正确的结果。您的列名列表是否正是星号*返回的内容?(作为旁注,永远不应该在 . 中使用星号select。)

还要确保以下数据类型:

<cfqueryparam value= "#Form.user#">

匹配UserID列的数据类型。

于 2013-05-14T10:47:29.297 回答