LUA 中的 db storequery 函数需要帮助

我正在尝试在 LUA 中进行 dbstorequery,但每次都会收到错误消息“尝试索引一个空值"

详细信息如下:

  • 我有一个 inputlist 数组
  • 从 inputlist 数组中,我将获取“状态”和“名称”信息
  • 在“Dataflow1”表的“TableEdoc”列中,使用“name”信息进行匹配
  • 查询结果应为包含匹配结果的“id”行号
  • 查询结果将只有1个结果
  • 查询结果将存储在“index”变量中

这是脚本:

local number updatestatus = data.inputlist[0].status

local number updatename = data.inputlist[0].name

local index = db.storequery("SELECT 'id' FROM 'Dataflow1' where 'TableEdoc' = 'updatename'")

data.dataflow1[index].status = updatestatus

这是我的“Dataflow1”表:

enter image description here

作为 LUA 的菜鸟,我需要帮助。

非常感谢

Rusdi

点赞
用户2858170
用户2858170

你的代码有几个问题。我期望在你没有提供的代码中会有更多问题,所以最好再次检查一遍。

Lua 是动态类型的语言。您在定义变量时不必给出类型。

local number updatestatus = data.inputlist[0].status

local number updatename = data.inputlist[0].name

实际上与以下代码相同:

local number = nil
updatestatus = data.inputlist[0].status
local number = nil
updatename = data.inputlist[0].name

我想这不是您想做的事情。

错误告诉你,你正在尝试索引一个 nil 值。在 Lua 中,这是没有意义的,因此它会引发一个错误。

您应该找出哪个值为 nil 并修复该值。例如,您可以简单地将它们打印出来。也许是打错了?data.dataflow1 而不是 data.Dataflow1

数据库请求可能不会返回任何结果。在这种情况下,大多数 API 将返回 nil。在使用查询结果之前,应检查查询结果是否为 nil。

您的数据库截图中没有任何条目是“updatename”。假设您的表中只有这 3 行,您不会得到结果。

还要注意,“updatename”是字面上的字符串 updatename 而不是变量 updatename 的内容。

您必须将变量的值插入到查询字符串中。

local query = string.format("SELECT 'id' FROM 'Dataflow1' where 'TableEdoc' = %q", updatename)
local index = db.storequery(query)

您确定是 storequery 而不是 storeQuery 吗?

2021-02-08 07:08:46