2013-12-15 34 views
2

我想用ColdFusion创建一个简单的登录页面,但是我一直在运行错误ORA-04054。无论哪个值的,我给我的#FORM.login_password#珍惜我的应用程序试图连接到#FORM.login_password#.server.com所以如果我试图用[Oracle] [Oracle] ORA-04054:数据库链接不存在

LOGIN_EMAIL =“[email protected]

登录

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"> 
+1

据此,http://ora-04054.ora-code.com/,你试图连接到不存在的数据库。我建议从cfquery标记中提取用户名和密码属性,并在ColdFusion管理页面上验证您的数据源。 –

+0

我明白,但是如果我不把任何WHERE子句我的查询选择从tbUser的一切。我的数据源,用户名或密码没有问题,因为我在没有问题的其他页面中使用它们。 –

+0

我相信丹是指数据库连接的用户名/密码。该用户名/密码与存储在tbUser中的用户名/密码不同 –

回答

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

那不是一个误导性的错误信息? –

+1

Oracle数据库可能将@data读为符号链接。 – williambq

2

您应该使用cfqueryparam。这是一个最佳实践,我认为解决问题。 就像是:

and email = <cfqueryparam value="#FORM.login_email#" cfsqltype="cf_sql_varchar"> 
+0

是的,尽管它应该用于两个参数,即'login_email'和'login_password' – Leigh