【发布时间】:2012-07-19 08:25:46
【问题描述】:
我编写了这个简单的脚本来更新 MySQL 中的表。为此,我创建了一个 for 循环并尝试了以下操作 (codepad link):
sUpdate = [[UPDATE `latest`
SET `date` = '%s'
WHERE `date` = '%s'
AND `fid` > 50000]]
for i = 1, 12 do
print( i )
sOldDate = "2009-"..tostring(i).."-10"
sNewDate = "2010-09-"..tostring(i)
sUpdate = string.format( sUpdate, sNewDate, sOldDate )
print( sUpdate )
end
输出如下:
1
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
2
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
3
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
4
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
5
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
6
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
7
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
8
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
9
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
10
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
11
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
12
UPDATE `latest`
SET `date` = '2010-09-1'
WHERE `date` = '2009-1-10'
AND `fid` > 50000
如您所见,print(i) 打印得很好,但sOldDate 和sNewDate 都被视为1。然后我把sOldDate和sNewDate改成如下:
sOldDate = string.format("2009-%d-10", i)
sNewDate = string.format("2010-09-%d", i)
我仍然得到两个日期的输出:2009-1-10 和 2010-09-1,如 here 所示。
这个循环可能有什么问题。我在这样的循环上工作了很长时间,直到今天它们才让我失望。
我认为这只是我无法识别的一些愚蠢的错误。任何帮助表示赞赏。
【问题讨论】:
-
我不是 lua 专家,但我在 for 循环中设置了 i=1,并且似乎从不递增,即 i++
-
@NicholasKing
Luas for 循环就是这样编程的。检查PIL -
我只是在阅读和围绕 Lua 循环,可以看到我的评论是不正确的,就像我说没有 Lua 专家,更多的是观察而不是答案。不过感谢您的更正。 :-)
标签: for-loop lua string-formatting increment