在Lua中将数组中的字符串连接成一个长字符串

3
我目前有这个结果
mk= {}
mk = conn:query({ live=true, sql="select * from OrderReports where OrderId= '"..T.OrderId.."'"})
 for a=1, # mk do

 end

我希望将mk中不同索引处的字符串拼接并存储在一个变量lk中,那么需要在代码块中写什么?

小心使用字符串连接将数据传递到SQL查询中,这会为SQL注入攻击打开大门。虽然此示例可能不太不安全,但最好使用准备好的语句和绑定(如果引擎支持的话,所有称职的引擎都应该支持)。 - Colonel Thirty Two
1个回答

5

直接的方法是像这样在 for 循环体中连接字符串:

local lk = ""
for a = 1, # mk do
    lk = lk .. mk[a]
end

但是当表格很大时,这种方法的性能较差,因为在Lua中字符串是不可变的。每次循环都会创建一个新字符串并复制内容。

相反,你应该使用内置函数table.concat()来完成这个任务:

local lk = table.concat(mk)

第一个出错,提示不能将具有子节点的节点用于连接。 - systemdebt
第二个出错,显示“尝试在'?'中使用错误的参数#1(需要表格,但得到了用户数据)”。 - systemdebt
@Simrankaur 你说 mk 是一个数组,在 Lua 中,这意味着它是一个表格,索引仅限于从 1 到某个整数值。但从你的错误消息来看,它不是,它的类型是 userdata - Yu Hao
谢谢Yu hao,它有效了 :),那是由于其他原因引起的错误,是我的错。谢谢 :) - systemdebt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接