我有一个不幸的任务,清理一堆旧的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" …
我被困了......不记得如何使这项工作.代码:
<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)
?谢谢.
我想知道在使用脚本函数时从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"?
我有以下内容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函数,如我在上一篇文章中所讨论的那样.
谢谢
我有一个简单的搜索查询:
<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中有特殊用途?
我有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) 如何使用查询查询选择特定范围的行?
例如
<cfquery name="myQuery" maxrows ="20" startrow="12">
SELECT *
FROM previous_query
WHERE row_numer >= 12
</cfquery>
Run Code Online (Sandbox Code Playgroud)
诸如此类的事情...
好的,我们试图通过使用包含已定义字段的数据库表来变得聪明:
(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应用程序,无法控制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)
谢谢!
我想在下面的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'结构.
关于如何解决这个问题的任何想法?
cfquery ×10
coldfusion ×10
sql ×2
cfloop ×1
coldfusion-8 ×1
coldfusion-9 ×1
database ×1
qoq ×1
sanitization ×1
struct ×1