2009-12-01 60 views
0

我已成立了用戶ID的會話變量時,在用戶登錄 - 這裏是代碼:會話變量從一個表中插入數據到另一個

<cflock timeout=999 scope="Session" type="Exclusive"> 
    <cfset Session.IDUsers = ""> 
</cflock> 

然後我想使用這個會話變量插入用戶ID到名爲「評論」當用戶添加評論另一個表 - 儘管它不工作,這是我的插入批註+ sessionvariable代碼:

<cfquery ...> 
    INSERT INTO comment (.... IDUsers) 
    VALUES (...info ...) 
    SELECT IDUsers 
    FROM users 
    WHERE users.IDUsers = <cfqueryparam value="#Session.IDUsers#"> 
</cfquery> 

雖然這是行不通的。這是錯誤 -

 
You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to 
use near 'SELECT IDUsers FROM users WHERE users.IDUsers = ''' at line 9. 

任何人都知道我要做什麼?

+1

請嘗試重新閱讀你自己的問題,並要求它在一個更好的辦法。另外,使用像cfdump這樣的基本調試工具來驗證您是否擁有SESSION範圍內的內容。 Henry 2009-12-01 23:31:48

回答

0

你不能包含「VALUES(... info ...)」和一個選擇。你必須選擇一個或另一個,我猜這就是SQ1問題。另外,當你已經擁有身份證的時候,我並沒有在做選擇時看到很多觀點。所以,你應該只是這樣做:

<cfquery ...> 
    INSERT INTO comment (.... IDUsers) 
    VALUES (other fields...<cfqueryparam value="#Session.IDUsers#">) 
</cfquery> 

,如果你必須做其他的查詢,以確保它在分貝然後只是做上述這一個拿到ID的其他查詢。

+0

好吧,我試了一下,但我不確定要放什麼 是否有任何代碼你知道這會使它工作嗎? 謝謝,B. – Bridget 2009-12-02 19:00:00

1

您是否傾銷會話範圍以確認IDUser不爲空?

<cfdump var="#session.IDUser#"> 

您可能會考慮在運行查詢之前測試Session.IDUsers值是否有效。如果這個值是空的,我懷疑它會拋出一個錯誤。

,如果它是一個基於文本:

<cfif len(session.IDUsers)> 
    <cfquery... 

,如果它是數字:

<cfif isNumeric(session.IDUsers)> 
    <cfquery... 

如果可能的話,我也建議運行在MySQL查詢瀏覽器查詢,因爲它會幫助您解決您的SQL句法。

0

它在丹後竟然回答以上,但因爲它看起來像你沒有得到它尚未工作...

<cfif len(session.IDUsers)> 
<!--- the session variable has some value assigned so it can be used in the query ---> 
<cfquery datasource='yourDataSourceName' name="addComment"> 
    INSERT INTO comment (IDUsers, column1, anotherDataColumn) 
    VALUES (<cfqueryparam value="#Session.IDUsers#">, #column1Data#, #anotherColumnData#) 
</cfquery> 
<cfelse> 
<!--- session.IDUsers is null length ---> 
<cfoutput>session.IDUsers is not yet assigned a value and therefore has no length</cfoutput> 
<cfabort> 
</cfif> 
相關問題