Dan*_*del 2 coldfusion cfquery cfqueryparam coldfusion-8
假设有一个SQL表 Fruit
id | name
--- ------
1 | 'apples'
2 | 'pears'
3 | 'kiwi'
4 | 'bananas, peaches and plumbs'
Run Code Online (Sandbox Code Playgroud)
鉴于以下查询
<cfquery name="qAllFruit" datasource="#DSN#">
SELECT name FROM Fruit
</cfquery>
<cfquery name="qLeftoverFruit" datasource="#DSN#">
SELECT name FROM Fruit
WHERE name NOT IN (<cfqueryparam CF_SQL_TYPE="CF_SQL_VARCHAR"
value="#ValueList(qAllFruit.name)#"
list="yes" />)
</cfquery>
Run Code Online (Sandbox Code Playgroud)
然后qLeftoverFruit将错误地返回1行:bananas, peaches and plumbs因为扩展cfqueryparam列表被错误地解释:
WHERE name NOT IN ('apples','pears','kiwi','bananas','peaches and plumbs')
Run Code Online (Sandbox Code Playgroud)
有没有办法在仍然使用cfqueryparam标签时纠正这个问题ValueList?
更新以下是您可以用来重现此问题的要点:http://gist.github.com/a642878c96b82b21b52c
@Daniel Mendel,我认为问题在于ColdFusion使用的默认分隔符.您的数据中包含','并且CF中的默认分隔符为','顺便提一下.
像这样更改您的查询 -
WHERE name NOT IN ( <cfqueryparam CFSQLType="CF_SQL_VARCHAR"
value="#ValueList(qTags.tag,';' )#"
list="Yes" separator=";" />
)
Run Code Online (Sandbox Code Playgroud)
只需将valueList中的分隔符更改为";" 从默认','并将QueryParam分隔符设置为';'.
| 归档时间: |
|
| 查看次数: |
1239 次 |
| 最近记录: |