Coldfusion - 修改数据库查询中的值

时间:2014-03-16 14:50:38

标签: variables coldfusion

请原谅这个问题的无知。冷血相当新鲜。我有一个数据库查询,它返回图像的标题以及图像的文件名。我想修改图像的文件名(#Image#),以便我可以显示我创建的缩略图。

例如,我的所有图像名称都采用以下形式: Title-[HeightxWidth].jpg

我想修改#Image#查询的结果,以便将HeightXwidth替换为[Thumbnail],这样它将如下所示: Title-[Thumbnail].jpg

我将使用Title-[HeightxWidth].jpgTitle-[Thumbnail].jpg的链接,但不想在我的数据库中输入这两个值。

1 个答案:

答案 0 :(得分:2)

要回答您提出的问题,可以通过以下两种方式之一简单地重新分配记录集中的值:

// create some test data
q = queryNew("");
queryAddColumn(q, "col", "varchar", [1,2,3,4]);
writedump(var=q, label="Initial values");

// update it
querySetCell(q, "col", "one", 1);
q.col[4] = "four";
writedump(var=q, label="Updated values");

所以querySetCell()或者只是一个作业陈述。

但是你不需要这样做。您可以根据查询中的值创建新变量,也可以只使用表达式,如果您不需要重用该值:

<cfloop query="q">
    <cfoutput>
    Original value: #col#<br>
    <cfset withSuffix = col & "_suffix">
    With suffix: #withSuffix#<br>
    With prefix: prefix_#withSuffix#<br>
    <hr>
    </cfoutput>
</cfloop>

&#34;棘手&#34;您的具体要求的一部分是将HxW - 例如100x200更改为新值。使用regular expression替换最容易实现,例如:

newValue = reReplace(oldValue, "\d+x\d+", "thumbnail", "all");

如果你愿意的话,你可以让正则表达式模式更具特色,但这可以根据你所说的来做。

我在my blog上以合理的长度处理CFML正则表达式。