gpt4 book ai didi

sql - 在 ColdFusion 中,属性值周围的单引号和双引号有什么作用?

转载 作者:行者123 更新时间:2023-12-03 18:16:26 25 4
gpt4 key购买 nike

例如,#Trim(FORM.fromfirstname)# 周围的 ""有什么作用?我正在添加 <cfqueryparam...>标签,我想知道是否仍然需要引号?

<CFQUERY NAME="account" DATASOURCE="#APPLICATION.centralDSN#">
SELECT *
FROM users
WHERE (firstname =<CFQUERYPARAM VALUE="#Trim(FORM.fromfirstname)#">)
AND (lastname = <CFQUERYPARAM VALUE="#Trim(FORM.fromlastname)#">)
AND (email = '#Trim(FORM.fromemail)#')
</CFQUERY>

这是一个不使用引号的 WHERE条款:
<CFIF getUser.RecordCount>
<CFQUERY NAME="cUser" DATASOURCE="#APPLICATION.centralDSN#">
UPDATE users
SET mailing_list = <CFIF IsDefined("FORM.mailing_list")>#FORM.mailing_list#<CFELSE>0</CFIF>
WHERE user_id = #getUser.user_id#
</CFQUERY>
</cfif>

编辑:如果他们什么都不做,保留他们也没有什么坏处,对吗?在另一个文件中,我发现了这样的例子
    to="#ListFirst(EnglishEmailList)#"
cc="#ListRest(EnglishEmailList)#"

所以如果他们已经在那里,我会离开他们吗?

最佳答案

SQL 需要为字符串加引号。

引号是标准 SQL 语法的一部分,用于指示字符串(实际上几乎所有语言中都有引号)。

如果它没有引号,那么 SQL 解析器将不知道字符串在哪里结束而 SQL 继续。

数字不需要引号 - 值的结束位置没有歧义。

还请记住,#hashes# 与 SQL 无关 - 它们完全在 CFML 方面。运行 cfquery 标记时,CF 会评估正文(包括它包含的任何哈希表达式)以创建 SQL 字符串,然后将其传递到数据库(以及其他设置/参数/等)。 SQL 服务器不知道该字符串的哪些部分是硬编码的,哪些部分可能是从散列中计算出来的。

cfqueryparam 不需要引号。

当您修复查询以使用 cfqueryparam 时,您正在创建参数,并且标记处理向 SQL 数据库指示字符串/等所需的一切。 (您永远不需要将 cfqueryparam 标签本身用引号括起来。)

在 cfqueryparam 标记中,无论您是否为属性使用引号都为零差异 - 这三个都产生相同的结果:

<cfqueryparam value="#var#" />
<cfqueryparam value='#var#' />
<cfqueryparam value=#var# />

关于sql - 在 ColdFusion 中,属性值周围的单引号和双引号有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11217118/

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