gpt4 book ai didi

mysql - 使用新标签填充自动完成列表

转载 作者:行者123 更新时间:2023-11-29 02:41:47 25 4
gpt4 key购买 nike

我正在使用 Lucee 5.x 和 Maria DB (MySQL)。

我有一个用户提供的逗号分隔列表。我需要查询数据库,如果该项目不在数据库中,我需要添加它。

用户提供的列表
绿色
蓝色的
紫色的
白色

数据库项目
黑色
白色的
红色的
蓝色的
粉色的
橙子
酸橙

预计数据库列表不会增加到 30 多个项目,但最终用户总能找到“创造性”的方式来使用我们提供给他们的工具。

因此使用上面的用户提供的列表,只有 greenpurple 应该添加到数据库中。

我是否将用户提供的列表与数据库项目进行比较,反之亦然?如果用户提供的列表数量超过数据库中的数量(意味着如果用户提交 10 个项目而数据库仅包含 5 个项目),流程会改变吗?我不确定哪个循环是确定哪些项目是新项目的更好方法。需要在 cfscript 中,我正在查看此处概述的循环选项 (https://www.petefreitag.com/cheatsheets/coldfusion/cfscript/)

FOR循环
FOR IN 循环(数组)
FOR IN 循环(查询)

我尝试了 NOT IN 的 MySQL,但除了新值之外,还剩下现有的数据库值。我知道这应该很简单,但我在某处使它过于复杂和/或太接近问题而看不到解决方案。

最佳答案

你可以这样做:

  • 从数据库中获取包含现有项目的列表
  • 附加用户提供的列表
  • 删除重复项
  • 如果添加了项目则更新数据库

<cfscript>

var userItems = '"green","blue","purple","white"';
var dbItems = '"black","white","red","blue","pink","orange","lime"';
var result = ListRemoveDuplicates( ListAppend(dbItems, userItems));

if (ListLen(result) neq ListLen(dbItems)) {
// update db
}

</cfscript>

Update (only new items)

<cfscript>

var userItems = '"green","blue","purple","white"';
var dbItems = '"black","white","red","blue","pink","orange","lime"';
var newItems = '';

ListEach(userItems, function (item) {
if (not ListFind(dbItems, item)) {
newItems = ListAppend(newItems, item);
}
})

</cfscript>

trycf.com 要点:
( https://trycf.com/gist/f6a44821165338b3c10b7808606979e6/lucee5?theme=monokai )

关于mysql - 使用新标签填充自动完成列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50279410/

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