gpt4 book ai didi

coldfusion - 这是 cfscript 中的 ColdFusion 错误吗?

转载 作者:行者123 更新时间:2023-12-01 11:47:46 25 4
gpt4 key购买 nike

这是一个有效的查询,用于返回用户表中用单引号括起来的电子邮件。

SELECT  '''' +email + '''' as email
FROM users
where fname = @fname

然而,当我尝试在这样的 cfscript (cf9) 查询中执行此操作时:

var q = new Query(datasource="warewithal");
q.setSQL("SELECT '''' +email + '''' as email
FROM users where firstName= :firstName ");
q.addParam(name="firstName", value=trim(firstName), cfsqltype="cf_sql_varchar");

我最终得到的是

Email
+email+

在我预期的时候(并通过在分析器中运行查询获得)

Email
'bozo@clowns.com'

cfscript 正在执行 perserveSingleQuote 并且不允许我将单引号添加到输出。

这是错误还是我做错了什么?

最佳答案

回答标题中的问题:不,这不是 CFScript 中的错误。您所演示的内容与 CFScript 完全无关。

但是要回答您的意思要问的问题:是的,您在 Query.cfc 中发现了一个错误。

下面是一些演示该错误的代码(并证明它与 CFScript 无关,而与 Query.cfc 相关)。

这段代码工作正常:

<cfset query = new Query(datasource="scratch_mssql")>
<cfset query.setSql("
SELECT '''' + email + '''' as email
FROM users
WHERE firstName = '#firstName#'
")>
<cfset emailAddresses = query.execute().getResult()>
<cfdump var="#emailAddresses#">

请注意,我已将过滤器值硬编码到 SQL 字符串中。呸。

此代码错误:

<cfset query = new Query(datasource="scratch_mssql")>
<cfset query.setSql("
SELECT '''' + email + '''' as email
FROM users
WHERE firstName = :firstname
")>
<cfset query.addParam(name="firstname", value=firstName, cfsqltype="CF_SQL_VARCHAR")>
<cfset emailAddresses = query.execute().getResult()>
<cfdump var="#emailAddresses#">

我的错误是:

[Macromedia][SQLServer JDBC Driver][SQLServer]对象或列名丢失或为空。 对于 SELECT INTO 语句,验证每个列都有一个名称。对于其他语句,寻找空的别名。不允许定义为 ""或 [] 的别名。将别名更改为有效名称。

仅供引用:CF 传递给数据库的 SQL 是:

SELECT  '' '' + email + '' '' as email FROM users WHERE firstName = (param 1)

为了证明它是由 ColdFusion 错误处理您的单引号引起的,这是有效的:

<cfset query = new Query(datasource="scratch_mssql")>
<cfset query.setSql("
SELECT email as email
FROM users
WHERE firstName = :firstname
")>
<cfset query.addParam(name="firstname", value=firstName, cfsqltype="CF_SQL_VARCHAR")>
<cfset emailAddresses = query.execute().getResult()>
<cfdump var="#emailAddresses#">

所以我会提出 bug为此,如果我是你。注意:在CF9.0.2和CF10.0.7上是一样的

但是,同样……如果我是你,我无论如何都不会把那些引语放在那里。除非有充分的理由,否则请在进行显示时将其插入,而不是在进行数据处理时。我猜它们是为了展示目的?

关于coldfusion - 这是 cfscript 中的 ColdFusion 错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408774/

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