我正在尝试使用ColdFusion创建一个简单的登录页面但是我遇到了错误ORA-04054。无论我给#FORM.login_password#值赋予哪个值,我的应用都会尝试连接到#FORM.login_password#.server.com,如果我尝试使用
登录login_email =“test@test.test”
login_password =“test”
ColdFusion将尝试连接到test.server.com并返回错误。我最初认为这可能是由于多个变量具有冲突的名称,但是在无数次重命名我的所有变量后,我已经没有想法了。
FORM:
<form action="login.cfm" method="post">
E-mail: <input type="email" name="login_email" required placeholder="E-mail">
Password: <input type="password" name="login_password" required placeholder="Password">
<input name="submit" type="submit" Value="Search Parts">
</form>
LOGIN.CFM:
<cfinclude template="header.cfm">
<cfinclude template="base.cfm">
<cfquery name="*****"
datasource="*****"
username="*****"
password="*****">
SELECT *
FROM tbUser
WHERE password = #FORM.login_password#
AND email = #FORM.login_email#
</cfquery>
<cfoutput>
<cfif #userLogin.RecordCount# eq 0>
FAILURE
<cfelse>
SUCCESS
</cfif>
</cfoutput>
<cfinclude template="footer.cfm">
答案 0 :(得分:3)
答案尽管让我筋疲力尽,但最终还是很简单:我没有用引号封装我的查询值:
<cfquery name="*****" datasource="*****" username="*****" password="*****">
SELECT *
FROM tbUser
WHERE password = '#FORM.login_password#'
AND email = '#FORM.login_email#'
</cfquery>
<cfif userLogin.RecordCount eq 0>
FAILURE
<cfelse>
SUCCESS
</cfif>
答案 1 :(得分:2)
你应该使用cfqueryparam。这是一种最佳实践,我认为可以解决问题。 像那样:
and email = <cfqueryparam value="#FORM.login_email#" cfsqltype="cf_sql_varchar">