标签: cfquery

如何在ColdFusion中覆盖SQL清理

我有一个不幸的任务,清理一堆旧的ColdFusion代码.查询到处都是,我正在努力将它们全部转移到普通的CFC上以便于维护.

我遇到了一个问题,因为cfquery它会自动将单引号转换为双引号.我该如何覆盖这种行为?

更具体的信息如下.


所以这是我开始的查询:

<cfquery name="getObjectInfo" datasource="#BaseDS#">
  SELECT groupName AS lastname, '[Group]' AS firstname
  FROM   groups
  WHERE  groups.group_id = #objectreference_id#
</cfquery>
Run Code Online (Sandbox Code Playgroud)

这里奇怪的是文字被"选中",因为我们希望它被显示的方式(再次,我没有写这个,我只是想把它清理一下).所以在common函数中,select子句有一个可选参数:

  <cffunction name="fSelGroup" access="public" returntype="query"
              hint="Returns query selecting given group.">

    <cfargument name="intGroupID" type="numeric" required="true"
                hint="ID of group to be returned." />
    <cfargument name="strSelectAttributes" type="string" required="false"
                hint="Attributes to be selected in query"
                default="*" />

    <cfquery name="getObjectInfo" datasource="#Application.DataSource#">
      SELECT #Arguments.strSelectAttributes#
      FROM   Groups
      WHERE  Group_ID = #Arguments.intGroupID#
    </cfquery>

    <cfreturn getObjectInfo />

  </cffunction>
Run Code Online (Sandbox Code Playgroud)

这是问题:当我传入"GroupName AS LastName, '[Group]' AS FirstName" …

sql coldfusion sanitization cfquery

5
推荐指数
2
解决办法
2628
查看次数

当查询列是变量时从cfquery获取值

我被困了......不记得如何使这项工作.代码:

<cfquery name = "getsomething>
   select a, b, c
   from d
   where id = '1'
</cfquery>
<cfloop collection="#arguments#" item="argument">
    <cfif #StructFind(arguments, argument)# neq #getsomething.argument[0]#><!--- here's the problem --->
        do something
    </cfif>
</cfloop>
Run Code Online (Sandbox Code Playgroud)

查询返回一条记录; 我需要获取该记录的每列的值.列名是变量(参数).我需要替换什么语法

 #getsomething.argument[0]#
Run Code Online (Sandbox Code Playgroud)

?谢谢.

coldfusion cfquery cfloop

4
推荐指数
1
解决办法
1411
查看次数

从Appliction.cfc访问变量

我想知道在使用脚本函数时从Application.cfc文件调用变量的新方法,该函数的格式为"this.something"我的例子:

component {

    // application variables
    this.datasource = "my DSN";

}
Run Code Online (Sandbox Code Playgroud)

现在在我的cfquery中我想访问它.我过去用过,我会在Application.cfc中使用[cfset REQUEST.dataSource ="MyDSN"],然后在我的cfqrey中我会说;

<cfquery name="rs_dailytip" datasource="#REQUEST.dataSource#">
My SQL
</cfquery>
Run Code Online (Sandbox Code Playgroud)

我的问题是如何使用新的Application.cfc,我使用"this.datasource"?

database coldfusion cfquery application.cfc coldfusion-10

4
推荐指数
1
解决办法
162
查看次数

在数据库中插入数据时处理空值

我有以下内容cfquery:

<cfquery name="CQuery" datasource="XX.X.X.XXX">
        INSERT INTO DatabaseName 
            (PhoneNumber_vch,
             Company_vch,
             date_dt)

         VALUES(#PhoneNumber#,
            #Company#,
            #Date# )

    </cfquery>
Run Code Online (Sandbox Code Playgroud)

公司名称不存在的情况下有空值,我相信因为我得到以下错误:

 Error Executing Database Query.
[Macromedia][SQLServer JDBC Driver][SQLServer]Incorrect syntax near ','. 
Run Code Online (Sandbox Code Playgroud)

,错误消息中指向的逗号是在#Company#字段之后 .请让我知道是因为空值和最佳解决方法吗?

PhoneNumber,company和Date中的值是从XML SOAP响应中提取的,并正确使用了trim函数,如我在上一篇文章中所讨论的那样.

在coldfusion中使用cfif

谢谢

coldfusion cfquery coldfusion-8

4
推荐指数
1
解决办法
3129
查看次数

如何为包含开括号字符的字符串执行带有LIKE条件的SQL SELECT?

我有一个简单的搜索查询:

<cfquery name="_qSearch" dbtype="Query">
    SELECT 
        *
    FROM    MyQoQ
    WHERE
        DESCRIPTION LIKE '%#URL.searchString#%'
</cfquery>
Run Code Online (Sandbox Code Playgroud)

此查询适用于大多数值.但是,如果有人搜索类似的值"xxx[en",它会弹出错误消息The pattern of the LIKE conditional is malformed..

有没有办法解决这个问题,因为支架在CFQUERY中有特殊用途?

sql coldfusion cfquery qoq

4
推荐指数
1
解决办法
922
查看次数

如何在带有cfquery列的结构中设置动态键名?

我有currentRow要用cfquery column 替换键的结构recID。该列是整数,将在sql表中自动递增。由于某种原因,我的代码无法使用唯一键创建结构。这是我的代码:

<cfquery name="qryAccounts" datasource="myDB">
   SELECT RecID, FirstName, LastName
   FROM Accounts WITH (NOLOCK)
</cfquery>

<cfloop query="qryAccounts">
    <cfset fnAccounts[RecID] = StructNew()>
    <cfset fnAccounts[RecID].RecordID = RecID>
    <cfset fnAccounts[RecID].FirstName = FirstName>
    <cfset fnAccounts[RecID].LastName = LastName>
</cfloop>
Run Code Online (Sandbox Code Playgroud)

上面的代码产生了以下结果:

[
  {
    "FIRSTNAME": "Mike",
    "LASTNAME": "Richards",
    "RECORDID": 1
  },
  null,
  null,
  null,
  {
    "FIRSTNAME": "John",
    "LASTNAME": "Matt",
    "RECORDID": 6
  }
]
Run Code Online (Sandbox Code Playgroud)

然后我尝试这样做:

<cfquery name="qryAccounts" datasource="myDB">
   SELECT RecID, FirstName, LastName
   FROM Accounts WITH (NOLOCK)
</cfquery>

<cfloop query="qryAccounts">
    <cfset fnAccounts["ID"&RecID] = …
Run Code Online (Sandbox Code Playgroud)

coldfusion struct cfquery coldfusion-2016

4
推荐指数
2
解决办法
518
查看次数

从查询查询中选择行范围

如何使用查询查询选择特定范围的行?

例如

<cfquery name="myQuery" maxrows ="20" startrow="12">
 SELECT *
 FROM   previous_query
 WHERE  row_numer >= 12
</cfquery>
Run Code Online (Sandbox Code Playgroud)

诸如此类的事情...

coldfusion cfquery

3
推荐指数
1
解决办法
3548
查看次数

在cfquery中嵌入cfswitch

好的,我们试图通过使用包含已定义字段的数据库表来变得聪明:

(1) id, name, title, datemodified, dateadded
Run Code Online (Sandbox Code Playgroud)

然后将它们扩展为各种"对象"

联系表 (2) id, name, title, datemodified, dateadded, sitecode, contactid

要么:

条款表 (3) id, name, title, datemodified, dateadded, sitecode, articleid, votes

所以你会注意到(1)成为基础,(2)和(3)扩展.

我们有一个基础对象,在这些基本字段上进行数据库查询,然后我们尝试使用以下代码神奇地扩展它:

<cfquery name="local.qReturnQuery" datasource="#variables.sDSN#">   
     SELECT id, name, title, datemodified, dateadded, sitecode, contactid
       FROM tbl_#arguments.sPrefix# cb
      WHERE 1
        <cfif arrayLen(arguments.aExtendedParams) gt 0>
            <cfloop from="1" to="#arrayLen(arguments.aExtendedParams)#" index="local.x">
                 <cfscript>
                      local.sParamField = arguments.aExtendedParams[local.x][1];
                      local.sParamValue = arguments.aExtendedParams[local.x][2];
                      local.sParamType = arguments.aExtendedParams[local.x][3];
                      local.bParamIsList = arguments.aExtendedParams[local.x][4];
                      local.sParamCondition = arguments.aExtendedParams[local.x][5];            
                      local.bIsPositive = arguments.aExtendedParams[local.x][6];
                </cfscript>
                <cfswitch expression="#local.sParamType#">
                      <cfcase value="integer,boolean" delimiters="true">
                            #local.sParamCondition# …
Run Code Online (Sandbox Code Playgroud)

coldfusion cfquery coldfusion-9

3
推荐指数
1
解决办法
277
查看次数

ColdFusion查询属性重复

我正在为一个类开发一个基本的ColdFusion应用程序,无法控制CFAdmin.我想知道是否有办法避免在我的每个查询中重复属性数据源,用户名和密码,因为它们总是相同的.

更换:

<cfquery name="name"
datasource="datasource"
username="username"
password="password">
Run Code Online (Sandbox Code Playgroud)

通过:

<cfquery name="name">
Run Code Online (Sandbox Code Playgroud)

谢谢!

coldfusion cfquery

3
推荐指数
1
解决办法
117
查看次数

如何在查询查询中使用函数?

我想在下面的QoQ中实现类似于IIF的东西.但它给了我一个错误.要么我做错了,要么就是不可能.希望它是前者.

<cfquery dbtype="query">
select 
  lastname + IIF(Len(firstname) > 0, DE(", " & firstname), DE("")) as fullname 
from myquery
</cfquery>
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

查询查询语法错误.
遇到"(.不正确的Select语句,期待'FROM',但遇到'('相反,一个select语句应该有一个'FROM'结构.

关于如何解决这个问题的任何想法?

coldfusion cfquery

3
推荐指数
1
解决办法
399
查看次数