2009-12-01 65 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> 
相关问题