gpt4 book ai didi

Coldfusion - 添加列表参数未正确插入值

转载 作者:行者123 更新时间:2023-12-02 08:02:43 25 4
gpt4 key购买 nike

我正在尝试执行以下操作:

sentence = "some set of words";
words = sentence .split(" ");
qryWords = new Query();
qryWords .setSQL("
SELECT
[word]

FROM
[word_list]

WHERE
[word] IN ( :wordsToCheck )
");

qryWords.addParam( name="wordsToCheck", value = words, CFSQLTYPE="CF_SQL_VARCHAR", list="true" );
qryWordsResult = qryWords.execute();

我得到 0 个结果但没有错误,我期望有结果(我已经通过用静态字符串替换 sql 参数来检查这一点)。奇怪的是当我转储 qryWordsResult , 它显示

SQLPARAMETERS   
array
1 [Ljava.lang.String;@3a4b8277

但如果我使用标签和 <cfqueryparam ... 做同样的事情, 结果转储是

SQLPARAMETERS   
array
1 words

最佳答案

This does work but using the array works in <cfqueryparam ..> so I'm wondering why [addParam()] doesn't exhibit the same behavior

它只是似乎 有效。由于 cfqueryparam 需要一个字符串,CF 会默默地将数组转换为字符串(即文字字符串 [Ljava.lang.String;@3a4b8277 )。因此,尽管查询成功执行,但该字符串显然不会匹配“word”列中的任何值。

IMO 使用 QueryExecute()Query.cfc 简单.使用占位符 ? ,应该可以解决问题。

请注意,添加“分隔符”属性以将列表分隔符更改为空格。

result = queryExecute(
" SELECT [word] FROM [word_list] WHERE [word] IN ( ? )"
, [ { value="some set of words"
, cfsqltype="cf_sql_varchar"
, list=true
, separator=" " }
]
, {datasource="YourDataSource"}
);
writeDump( result );

关于Coldfusion - 添加列表参数未正确插入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55046909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com