请原谅这个问题的无知。冷血相当新鲜。我有一个数据库查询,它返回图像的标题以及图像的文件名。我想修改图像的文件名(#Image#),以便我可以显示我创建的缩略图。
例如,我的所有图像名称都采用以下形式:
Title-[HeightxWidth].jpg
我想修改#Image#
查询的结果,以便将HeightXwidth替换为[Thumbnail],这样它将如下所示:
Title-[Thumbnail].jpg
我将使用Title-[HeightxWidth].jpg
和Title-[Thumbnail].jpg
的链接,但不想在我的数据库中输入这两个值。
答案 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正则表达式。